Хотел сделать эффект как в игрушке из фикспрайса но светодиоды не горят

хотел сделать эффект как в игрушке из фикспрайса но светодиоды не горят

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 лайк

А слона я и не приметил))
Могу лишь предположить, что ТС имел ввиду, но даже озвучивать такое не хочу )))
Кстати, подобный стиль подходит под логику MPLAB…

Нет чтения кнопки нигде, butt в условиях как флаг зачем?
…ааааа понял, типа кнопка сама читается, за кадром.

Потому что

Ну на PIC да, макрос сам вызывает чтение.

1 лайк

Виноват, не понял великого замысла, т.к. для PIC на Си ничего не писал, лишь давненько асм немного юзал.))

Так то на PIC, а тут вроде как ардуина и такого поведения быть не должно…

Так и я, пошутил вроде))

1 лайк

Чуть подправил, чтобы стало понятней, как оно работает

Спойлер
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;
}