количество нажатий на кнопку

nic3
Offline
Зарегистрирован: 24.06.2017

доброе время суток, форумчане. помогите с таким вопросом: есть кнопка и 3 светодиода которые работают как бегущий огонёк, необходимо, что бы при нажатии на кнопку менялась скорость загорания светодиодов. снизу пример кода, куда и как присобачить кнопку не имею понятия 

#define LED_OFFSET 3
char counter=0;
void setup() 

{
DDRD|=(1<<3)|(1<<4)|(1<<5);
DDRD&=~(1<<7);
}

void loop() {

    {
      if(counter==4)counter=0;
      PORTD&=~((1<<3)|(1<<4)|(1<<5));
      PORTD|=(1<<(counter+LED_OFFSET));
      counter++;
    }

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Спросите у автора кода. Писали-то его явно не Вы, а автор знает как кнопки присобачивать.

zibazon
Offline
Зарегистрирован: 07.12.2013

nic3 пишет:

 снизу пример кода, куда и как присобачить кнопку не имею понятия

я бы вообще код переделал

кнопку надо объявить в настройках (в зависимости от типа подключения) и юзать в лупе

вот бредни сумасшедшего



int counter=0;
int ledspeed=1000;

void setup() {
       pinMode(2,INPUT);//кнопка на второй вывод
       digitalWrite(2,HIGH);//включена подтяжка для кнопки
       pinMode(3,OUTPUT);//светодиод 1
       pinMode(4,OUTPUT);//светодиод 2
       pinMode(5,OUTPUT);//светодиод 3
       Serial.begin(9600);
}

void loop() {
      
      if (digitalRead(2)==LOW)  {
      counter++;
      }
        if (counter==1) {
        Serial.println("the first speed");
        Serial.println("delay speed");
        Serial.println(ledspeed);
        led();
        }
        else if (counter==2) {
        ledspeed=500;
        Serial.println("the second speed");
        Serial.println("delay speed");
        Serial.println(ledspeed);
        led();
        }
        else if (counter==3) {
        ledspeed=150;
        Serial.println("the third speed");
        Serial.println("delay speed");
        Serial.println(ledspeed);
        led();
        }
        else if (counter==4) {
        counter=1;
        ledspeed=1000;
        Serial.println("the first speed");
        Serial.println("delay speed");
        Serial.println(ledspeed);
        led();
        }
      
}

void led(){
  digitalWrite(3,HIGH);
  Serial.println("1st on");
  delay(ledspeed);
  digitalWrite(3,LOW);
  Serial.println("1st off");
  digitalWrite(4,HIGH);
  Serial.println("2d on");
  delay(ledspeed);
  digitalWrite(4,LOW);
  Serial.println("2st off");
  digitalWrite(5,HIGH);
  Serial.println("3rd on");
  delay(ledspeed);
  digitalWrite(5,LOW);
  Serial.println("3rd off");
}