Добрый день, форумчане. Такая задача. Хочу создать несколько устройств на светодиодах. Задача каждого в том, чтобы от движения (датчик вибрации, наклона) светодиод начинал моргать, переливаться и т.д. Подпитывается всё от батарейки, конечно же как можно меньших размеров (таблетка).
Собственно я уже реализовал такое пробное устройство на ATtiny13, вибродатчике 18015 и батарейке CR1220. Всё работает, но хотелось бы это дело и удешевить и уменьшить в размерах, если это конечно же возможно. Особо в параметрах МК я не разбираюсь, но могу сказать что мне от неё точно нужно:
1) Маленький размер
2) Как минимум 1 канал ШИМ (а лучше 3, для переливания трёх светодиодов RGB)
3) Память на 1Кб (программу для одного такого устройства приложу ниже, может её можно и сократить, но не факт что такую же, но на три диода получится ужать)
4) Низкое потребление или возможность подключения режимов с низким потреблением.
5) Работа от 3В. (от таблетки)
6) Возможность программирования через Arduino UNO (но другие варианты тоже рассматриваю, просто Arduino уже есть)
Повторюсь пока что нашел и использовал только ATtiny13, который меня вполне устроил, но он достаточно дорогой и в корпусе SOIC его найти достаточно проблематично. К тому же как мне показалось, он слишком хорош для такого проекта. Повторюсь, я чайник, и может есть какие-то более дешевые аналоги.
Очень надеюсь на Вашу помощь. Заранее большое Вам спасибо!
Прикладываю обещанный мною код:
Код
int vib = 4;
int led = 0;
long loopTime = 5000;
void setup() {
pinMode(led, OUTPUT);
pinMode(vib, INPUT);
}
void loop()
{
if (digitalRead(vib)){
unsigned long currentMillis = millis();
while(millis()-currentMillis<=loopTime)
{
for(int fadeValue = 0; fadeValue <=255; fadeValue+=5){
analogWrite(led,fadeValue);
delay(2);
}
for(int fadeValue = 255; fadeValue >=0; fadeValue-=5){
analogWrite(led,fadeValue);
delay(2);
}
for(int fadeValue = 0; fadeValue <=255; fadeValue+=5){
analogWrite(led,fadeValue);
delay(2);
}
for(int fadeValue = 255; fadeValue >=0; fadeValue-=5){
analogWrite(led,fadeValue);
delay(2);
}
digitalWrite(led, LOW);
delay(600);
}
}
}