хотел сделать эффект как в игрушке из фикспрайса но светодиоды не горят
int r = 4;
int g = 5;
int b = 6;
int butt = 9;
int rgb = 0;
void setup() {
pinMode(r, OUTPUT);
pinMode(g, OUTPUT);
pinMode(b, OUTPUT);
pinMode(butt, INPUT_PULLUP);
}
void loop() {
if (rgb == 0 && butt == 1){
digitalWrite(r, 1);
rgb ++;}
if (rgb == 1 && butt == 1){
digitalWrite(g, 1);
rgb ++;}
if (rgb == 2 && butt == 1){
digitalWrite(b, 1);
rgb ++;}
if (rgb == 3 && butt == 1){
digitalWrite(r, 1);
digitalWrite(g, 1);
rgb ++;}
if (rgb == 4 && butt == 1){
digitalWrite(g, 1);
digitalWrite(b, 1);
rgb ++;}
if (rgb == 5 && butt == 1){
digitalWrite(b, 1);
digitalWrite(r, 1);
rgb = rgb + 1;}
if (rgb == 6 && butt == 1){
digitalWrite(r, 1);
digitalWrite(g, 1);
digitalWrite(b, 1);
rgb = 0;}
}
Очень интересно…butt одновременно и номер пина, и результат чтения кнопки?))
1 лайк
BOOM
22.Декабрь.2024 14:52:53
4
А слона я и не приметил))
Могу лишь предположить, что ТС имел ввиду, но даже озвучивать такое не хочу )))
Кстати, подобный стиль подходит под логику MPLAB…
lilik
22.Декабрь.2024 14:55:44
5
Нет чтения кнопки нигде, butt в условиях как флаг зачем?
…ааааа понял, типа кнопка сама читается, за кадром.
BOOM
22.Декабрь.2024 14:57:01
7
Ну на PIC да, макрос сам вызывает чтение.
1 лайк
Виноват, не понял великого замысла, т.к. для PIC на Си ничего не писал, лишь давненько асм немного юзал.))
BOOM
22.Декабрь.2024 15:31:42
9
Так то на PIC, а тут вроде как ардуина и такого поведения быть не должно…
goldfish:
но светодиоды не горят
Чуть подправил, чтобы стало понятней, как оно работает
Спойлер
int r = 4;
int g = 5;
int b = 6;
int rgb = 0;
int buttpin = 9;
int butt = 0;
void setup() {
pinMode(r, OUTPUT);
pinMode(g, OUTPUT);
pinMode(b, OUTPUT);
pinMode(buttpin, INPUT_PULLUP);
}
void loop() {
while (!butt)
butt = !digitalRead(buttpin);
if (rgb == 0 && butt == 1) {
digitalWrite(r, 1);
delay(300);
rgb ++;
}
if (rgb == 1 && butt == 1) {
digitalWrite(g, 1);
rgb ++;
}
delay(300);
if (rgb == 2 && butt == 1) {
digitalWrite(b, 1);
rgb ++;
}
delay(300);
if (rgb == 3 && butt == 1) {
digitalWrite(r, 1);
digitalWrite(g, 1);
rgb ++;
}
if (rgb == 4 && butt == 1) {
digitalWrite(g, 1);
digitalWrite(b, 1);
rgb ++;
}
delay(300);
if (rgb == 5 && butt == 1) {
digitalWrite(b, 1);
digitalWrite(r, 1);
rgb = rgb + 1;
}
delay(300);
if (rgb == 6 && butt == 1) {
digitalWrite(r, 1);
digitalWrite(g, 1);
digitalWrite(b, 1);
rgb = 0;
}
delay(300);
digitalWrite(r, LOW);
digitalWrite(g, LOW);
digitalWrite(b, LOW);
butt = 0;
}