Грибная светодиодная лампа Arduino
Введение
Честно говоря, я сделал это, потому что мне было очень скучно, а также я хотел что-нибудь классное для своей спальни, но когда я закончил, мой отец убедил меня оставить это в гостиной, потому что ему это понравилось, так и произошло, и когда мои бабушка и дедушка приехали в гости, им всем это очень понравилось, хотя они не были поклонниками сумасшедших странных волшебных ламп lsdeeeee.
Что это делает
Это прекрасное творение имеет три режима.
Изменение цветов с помощью двух потенциометров (два значения в «квадратных» данных RGB + желтый)
Случайный переход цвета, интенсивность светодиода меняется с помощью одного потенциометра, а время перехода контролируется вторым
Отображается случайный цвет, потенциометры работают так же, как и в последнем режиме.
Аппаратное обеспечение
Компоненты должны быть легкодоступными, я использовал самые распространенные. Кстати, я не рекомендую покупать их сразу, потому что вы можете оказаться в сожженном доме, но, честно говоря, меня это не волнует.
2 х потенциометра
например ПК1023д
включить/выключить
кнопка ползункового переключателя (размер должен быть 4х9 мм)
переключатель режима
кнопка (12,2х12,2мм) с квадратным верхом/сенсорный датчик
ардуино
arduino nano/uno (плата, имеющая как минимум 3 контакта ШИМ), но лучше использовать платы меньшего размера, потому что они легко помещаются
5 светодиодов
RGB светодиоды с общим катодом
адаптер
вы можете использовать любой переходник, который будет раз��елять постоянный ток на vcc и землю (o
р больше)
Некоторые детали питаются от цифровых контактов вместо обычного заземления или напряжения 5 В. Это безопасно, но это сократит срок службы Arduino.
Программное обеспечение
#include
целое состояние = 4;
интервал vcc = 2;
интервал vcc2 = 5;
int земля = 3;
int gnd2= 13;
интервал b_pin = 9;
интервал g_pin = 10;
интервал r_pin = 11;
режим int = 0;
интенсивность плавания;
интервал OldbuttonState;
цвета структуры {int intblue;
интервал между;
интервал intgreen;
int intyell;};
цвета столбцов;
интервал сек;
интервал прим;
int dir1 = случайное (1,256);
int dir2 = случайное (1,256);
int dir3 = случайное (1,256);
плавать xVal;
плавать yVal;
#define pot1 A0
#define pot2 A1
беззнаковое длинное время;
интервал потенциометра;
плавающий потенциометр;
недействительная настройка() {
pinMode (b_pin, ВЫХОД);
pinMode (g_pin, ВЫХОД);
pinMode (r_pin, ВЫХОД);
pinMode (VCC, ВЫХОД);
pinMode (vcc2, ВЫХОД);
pinMode (состояние, ВВОД);
pinMode (земля, ВЫХОД);
pinMode (gnd2, ВЫХОД);
Серийный.начало(9600);
}
недействительный цикл() {
digitalWrite(vcc, ВЫСОКИЙ);
digitalWrite(vcc2, ВЫСОКИЙ);
digitalWrite(земля, НИЗКИЙ);
digitalWrite(gnd2, LOW);
int buttonState = digitalRead (состояние);
if (buttonState==HIGH и buttonState != OldbuttonState){
режим++;
}
OldbuttonState = buttonState;
если (режим == 0) {
цвет();
}
иначе, если (режим == 1) {
изменить();
}
иначе, если (режим == 2) {
рндм();
}
иначе, если (режим >=2){
режим = 0;
}
xVal = AnalogRead(pot1);
yVal = AnalogRead(pot2);
потИнтен = xVal/4;
PotTime = yVal / 200;
Время = миллис();
прим = Время/1000;
}
недействительный цвет () {
cols.intblue = xVal/1023 * (1-(yVal/1023)) * 255;
cols.intred = (1-(xVal/1023)) * (1-(yVal/1023)) * 255;
cols.intgreen =xVal/ 1023* yVal/1023 * 255;
cols.intyell = ((1-(xVal/1023))* yVal/1023 * 255)/2;
цветСвет();
}
недействительное изменение () {
if (prim — sec >= potTime){
сек = прим;
если (dir1== cols.intblue){
реж1 = случайный (1,256);
}
if(dir1 >cols.intblue){
cols.intblue=cols.intblue+1;
}
если(dir1< cols.intblue){
cols.intblue=cols.intblue-1;
}
если (dir2== cols.intgreen){
реж2 = случайный (1,256);
}
if(dir2> cols.intgreen ){
cols.intgreen =cols.intgreen+1;
}
if(dir2< cols.intgreen){
cols.intgreen=cols.intgreen-1;
}
если (dir3== cols.intred){
реж3 = случайный (1,256);
}
if(dir3> cols.intred ){
cols.intred=cols.intred+1;
}
если (dir3 < cols.intred) {
cols.intred=cols.intred-1;
}
}
cols.intyell=0;
режимыСветодиод();
}
недействительный ��ндм () {
if (prim — sec >= (potTime + 2)){
сек = прим;
cols.intyell = 0;
cols.intblue= случайный(0,256);
cols.intgreen= случайный(0,256);
cols.intred= случайный(0,256);
if (cols.intblue == 0 и cols.intgreen==0){
столбец





























