Листалка параметров

serrtr
Offline
Зарегистрирован: 17.07.2017

Помогите в создании нормальной листалки.

Програмированием до этого никогда не занимался.

В итоге код откудато содрал и доработал, но работает не как хотелось бы.

Листалка по кругу одной кнопкой. при включении оказывается посередине (mode 6) и при нажатии кнопки двигаетсся по кругу.

Хотелосьбы 2 кнопки - вниз и вверх.

 

int GLED=10;    //выход зеленых
int BLED=11;    //выход синих
 
int BUTTON=A0;    //кнопка переключения градаций
 
 
 
boolean lastButton = LOW;    //Last Button State
boolean currentButton = LOW; //Current Button State
int ledMode = 6;             //Cycle between LED states
 
void setup()
{
  pinMode(LIGHT, INPUT);
  pinMode (BLED, OUTPUT);   //Set Blue LED as Output
  pinMode (GLED, OUTPUT);
  pinMode (BUTTON, INPUT);  //Set button as input (not required)
  pinMode (A0, INPUT);
 
 
}
 
 
/*
* Устранения дребезга контактов кнопки
*/
boolean debounce(boolean last)
{
  boolean current = digitalRead(BUTTON);       //Read the button state
  if (last != current)                         //if it's different...
  {
    delay(5);                                  //wait 5ms
    current = digitalRead(BUTTON);             //read it again
  }
  return current;                              //return the current value
}
 
 
void setMode(int mode)
{
if (mode == 1)
  {
    //син/зел
  }
  else if (mode == 2)
  {
    //син/зел
  }
 
// и так далее
 
  else if (mode == 12)
  {
    //син/зел
  }
 else
 {
   // син/зел не горят
  }
}
 
void loop()
{
  currentButton = debounce(lastButton);           //read debounced state
  if (lastButton == LOW && currentButton == HIGH) //if it was pressed...
  {
    ledMode++;                                    //increment the LED value
  }
  lastButton = currentButton;                     //reset button value
//  if you’ve cycled through the different options, reset the counter to 0
  if (ledMode == 13) ledMode = 0;
  setMode(ledMode);                              //change the LED state
 
}
 
JasKo
Offline
Зарегистрирован: 21.11.2015

Вставляйте код как положено, пожалуйста. (Есть волшебная кнопочка {code})

int GLED=10;    //выход зеленых
int BLED=11;    //выход синих

int BUTTON=A0;    //кнопка переключения градаций



boolean lastButton = LOW;    //Last Button State
boolean currentButton = LOW; //Current Button State
int ledMode = 6;             //Cycle between LED states

void setup()
{
  pinMode(LIGHT, INPUT);
  pinMode (BLED, OUTPUT);   //Set Blue LED as Output
  pinMode (GLED, OUTPUT);
  pinMode (BUTTON, INPUT);  //Set button as input (not required)
  pinMode (A0, INPUT);


}


/*
* Устранения дребезга контактов кнопки
*/
boolean debounce(boolean last)
{
  boolean current = digitalRead(BUTTON);       //Read the button state
  if (last != current)                         //if it's different...
  {
    delay(5);                                  //wait 5ms
    current = digitalRead(BUTTON);             //read it again
  }
  return current;                              //return the current value
}


void setMode(int mode)
{
if (mode == 1)
  {
    //син/зел
  }
  else if (mode == 2)
  {
    //син/зел
  }

// и так далее

  else if (mode == 12)
  {
    //син/зел
  }
 else
 {
   // син/зел не горят
  }
}

void loop()
{
  currentButton = debounce(lastButton);           //read debounced state
  if (lastButton == LOW && currentButton == HIGH) //if it was pressed...
  {
    ledMode++;                                    //increment the LED value
  }
  lastButton = currentButton;                     //reset button value
//  if you’ve cycled through the different options, reset the counter to 0
  if (ledMode == 13) ledMode = 0;
  setMode(ledMode);                              //change the LED state

}