duinozone.cz - Arduino a Raspberry fórum

Autor Téma: binarne odstupnované LED a LCD displej  (Přečteno 113 krát)

nichicon

  • Host
binarne odstupnované LED a LCD displej
« kdy: Srpen 01, 2017, 14:09:14 odpoledne »
Ahoj,
pomocou 2 tlačítok UP a DOWN riadim 8 kusov binarne odstupnovaných LED. To dáva 255 samostatných nastavení. Kedže orientovať sa dvoma tlačítkami v 255 krokoch je dosť potreboval by som doplniť LCD displej. Ako vyzerá môj program posielam nižšie. Hladal som ako sa pracuje s LCD a našiel som toto   https://www.arduino.cc/en/Tutorial/HelloWorld   vyzerá to skutočne jednoducho. Problém je že aj keby som tie programy vedel zlúčiť, ako ku každej nastavenej hodnote tých binarne odstupnovaných LED priradím nejake zobrazenie niečoho na LCD displeji? Potreboval by som pre celých 255 posúvaných tlačítkom UP a DOWN dopísať nejaku hodnotu na displej. Keby niekto vedel proadiť, bol by som rád. Každopadne som uplný začiatočník takže berte na to prosím ohlad. Ďakujem.

// constants won't change. They're used here to
// set pin numbers:
const int buttonPinUp = 13;     // tlacitko up
const int buttonPinDown = 11;     // tlacitko down
const int ledPin1 =  9;      // the number of the LED pin
const int ledPin2 =  10;      // the number of the LED pin
const int ledPin3 =  12;
const int ledPin4 =  8;
const int ledPin5 =  7;
const int ledPin6 =  6;
const int ledPin7 =  5;
const int ledPin8 =  4;

const int ochrana = 100;

// variables will change:
int buttonStateUp;             // the current reading from the input pin
int buttonStateDown;             // the current reading from the input pin
int lastButtonStateUp = LOW;   // the previous reading from the input pin
int lastButtonStateDown = LOW;   // the previous reading from the input pin
int stateLed = 1;        // stav - kolko lediek bude svietit
int maxLed = 255;        // stav - kolko lediek bude svietit
int _step = 0;


// the following variables are long's because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long lastDebounceTimeUp = 0;  // the last time the output pin was toggled
long lastDebounceTimeDown = 0;  // the last time the output pin was toggled
long lastOchrana = 0;  // the last time the output pin was toggled
long debounceDelay = 50;    // the debounce time; increase if the output flickers

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin1, OUTPUT); 
  pinMode(ledPin2, OUTPUT); 
  pinMode(ledPin3, OUTPUT);   
  pinMode(ledPin4, OUTPUT);   
  pinMode(ledPin5, OUTPUT);   
  pinMode(ledPin6, OUTPUT);   
  pinMode(ledPin7, OUTPUT);   
  pinMode(ledPin8, OUTPUT);   

  // initialize the pushbutton pin as an input:
  pinMode(buttonPinUp, INPUT);
  pinMode(buttonPinDown, INPUT);     
 
 
  int buttonState_1 = HIGH;
  int buttonState_2 = LOW;
 
}

void loop(){

  int readingUp = digitalRead(buttonPinUp);
  int readingDown = digitalRead(buttonPinDown);

// If the switch changed, due to noise or pressing:
  if (readingUp != lastButtonStateUp) {
    // reset the debouncing timer
    lastDebounceTimeUp = millis();
  }

 
  if (readingDown != lastButtonStateDown) {
    lastDebounceTimeDown = millis();
  }
 
 
 
  if ((millis() - lastDebounceTimeUp) > debounceDelay) {
    if(lastOchrana+ochrana < millis() && readingUp == HIGH && stateLed < maxLed){
      stateLed++;
      lastOchrana = millis();
    }
  }

  if ((millis() - lastDebounceTimeDown) > debounceDelay) {
    if(lastOchrana+ochrana < millis() && readingDown == HIGH && stateLed > 0){
      stateLed--;
      lastOchrana = millis();
    }
  }
 
  //Ledka 1:
  if(stateLed % 2 == 1){
    digitalWrite(ledPin1, HIGH);
  }else{
    digitalWrite(ledPin1, LOW);
  }

  //Ledka 2:
  if((stateLed / 2) % 2 == 1){
    digitalWrite(ledPin2, HIGH);
  }else{
    digitalWrite(ledPin2, LOW);
  }

  //Ledka 3:
  if(((stateLed / 2) / 2) % 2 == 1){
    digitalWrite(ledPin3, HIGH);
  }else{
    digitalWrite(ledPin3, LOW);
  }

  //Ledka 4:
  if((((stateLed / 2) / 2) / 2) % 2 == 1){
    digitalWrite(ledPin4, HIGH);
  }else{
    digitalWrite(ledPin4, LOW);
  }

  //Ledka 5:
  if(((((stateLed / 2) / 2) / 2) / 2) % 2 == 1){
    digitalWrite(ledPin5, HIGH);
  }else{
    digitalWrite(ledPin5, LOW);
  }

  //Ledka 6:
  if((((((stateLed / 2) / 2) / 2) / 2) / 2) % 2 == 1){
    digitalWrite(ledPin6, HIGH);
  }else{
    digitalWrite(ledPin6, LOW);
  }

  //Ledka 7:
  if(((((((stateLed / 2) / 2) / 2) / 2) / 2) / 2) % 2 == 1){
    digitalWrite(ledPin7, HIGH);
  }else{
    digitalWrite(ledPin7, LOW);
  }

  //Ledka 8:
  if((((((((stateLed / 2) / 2) / 2) / 2) / 2) / 2) / 2) % 2 == 1){
    digitalWrite(ledPin8, HIGH);
  }else{
    digitalWrite(ledPin8, LOW);
  }



  // save the reading.  Next time through the loop,
  // it'll be the lastButtonState:
  lastButtonStateUp = readingUp;
  lastButtonStateDown = readingDown;
 

}

Offline Hamisato

  • Bastlíř začátečník
  • *
  • Příspěvků: 2
Re:binarne odstupnované LED a LCD displej
« Odpověď #1 kdy: Září 15, 2017, 06:14:58 dopoledne »
This information is very helpful to me.