Код для лампы с RGB диодом
- Войдите на сайт для отправки комментариев
Сб, 18/01/2014 - 17:36
Всем привет.
Идея - как бы арт-лампа, работающая только если её держать в руках. Меняет цвета под разными наклонами. Есть, собсно, сенсор, что прикосновения чувствует capacitive sensor library), три меркуриевых сенсора наклона ("кнопки!"), RGB диод. Оно работает, да, диод светит белым, и базовыми цветами. Но иной цвет не задается, если работают две "кнопки". Светит белым и все. Диод "кривой", с одной катодной лапой, цветовые - аноды. Так что на включение "low"
Простой код.
#include <CapacitiveSensor.h> CapacitiveSensor cs_4_2 = CapacitiveSensor(4,2); const int buttonPin1 = 8; //tilt1 const int buttonPin2 = 12; // tilt22 const int buttonPin3 = 13; // tilt3 const int red = 9; const int green = 10; const int blue = 11; int buttonState1 = 0; int buttonState2 = 0; int buttonState3 = 0; void setup() { cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF); pinMode(red, OUTPUT); pinMode(green, OUTPUT); pinMode(blue, OUTPUT); pinMode(buttonPin1, INPUT); pinMode(buttonPin2, INPUT); pinMode(buttonPin3, INPUT); } void loop(){ long start = millis(); long total1 = cs_4_2.capacitiveSensor(30); Serial.print(millis() - start); // read the state of the pushbutton value: buttonState1 = digitalRead(buttonPin1); buttonState2 = digitalRead(buttonPin2); buttonState3 = digitalRead(buttonPin3); // check if the pushbutton is pressed. // if it is, the buttonState is HIGH: if (buttonState1 == HIGH && total1>200) { digitalWrite(red, LOW); digitalWrite(green, HIGH); digitalWrite(blue, HIGH); } else if (buttonState2 == HIGH && total1>200) { digitalWrite(red, HIGH); digitalWrite(green, LOW); digitalWrite(blue, HIGH); } else if (buttonState3 == HIGH && total1>200) { digitalWrite(red, HIGH); digitalWrite(green, HIGH); digitalWrite(blue, LOW); } else if (buttonState1 == HIGH && buttonState2 == HIGH && total1>200) { digitalWrite(red, LOW); digitalWrite(green, LOW); digitalWrite(blue, HIGH); } else if (buttonState2 == HIGH && buttonState3 == HIGH && total1>200) { digitalWrite(red, HIGH); digitalWrite(green, LOW); digitalWrite(blue, LOW); } else if (buttonState1 == HIGH && buttonState3 == HIGH && total1>200) { digitalWrite(red, LOW); digitalWrite(green, HIGH); digitalWrite(blue, LOW); } else if ( total1>200) { digitalWrite(red, LOW); digitalWrite(green, LOW); digitalWrite(blue, LOW); } else { digitalWrite(red, HIGH); digitalWrite(green, HIGH); digitalWrite(blue, HIGH); } }
Я все ещё нуб в этом, сижу пробую как и что работает : )
Так что на включение "low"
или даже так:
О, прелестно, спасибо огромное, работает :D Второй код. Надо понять как это работает!
А как ещё сделать, чтобы просто при прикосновении к сенсору зажигался случайный цвет? или просто белый? :3 с простым кодом работало.
...принцип, как понимаю, в if-else как-то прописать, что " если сенсор > 200 && тилты=0" то диод работает на белый. Только как выключатели прописать в таком виде кода? :D