• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Jak zmusić uC do oczekiwania na argument (przycisk)
#27
Zmodyfikowałem i trochę odchudziłem program:

Kod:
//#include <LiquidCrystal.h> //Dołączenie bilbioteki

//LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //Informacja o podłączeniu nowego wyświetlacza


#include <LiquidCrystal_I2C.h> //biblioteka do wyświetlacza po I2C
LiquidCrystal_I2C lcd(0x27, 16, 2); // deklaracja adresu i rozmiaru wyświetlacza



// przykładowe przypisanie pinów
#define PWM1 3 //nie analizowałem czy na tych pinach działa PWM
#define PWM2 5 //nie analizowałem czy na tych pinach działa PWM
#define PWM3 6 //nie analizowałem czy na tych pinach działa PWM
#define PWM4 9 //nie analizowałem czy na tych pinach działa PWM
#define PWM5 10 //nie analizowałem czy na tych pinach działa PWM
#define PWM6 11


byte p = 0; // flaga do przycisku programowania
byte programowanie = 0;
int pwm1 = 0;
int pwm2 = 0;
int pwm3 = 0;
int pwm4 = 0;
int pwm5 = 0;
int pwm6 = 0;
int pwm0 = 0; // zmienna pomocnicza potrzebna do wyświetlania

void setup()
{
  pinMode(4, INPUT_PULLUP);
  pinMode(7, INPUT_PULLUP); //pelni funkcje OK
  lcd.init(); // uruchomienie wyświetlacza
  lcd.backlight(); // i takie tam
 
  //lcd.begin(16, 2);
  //lcd.clear();
}

void loop()
{
  // tu leci sobie program
  analogWrite(PWM1, pwm1);
  analogWrite(PWM2, pwm2);
  analogWrite(PWM3, pwm3);
  analogWrite(PWM4, pwm4);
  analogWrite(PWM5, pwm5);
  analogWrite(PWM6, pwm6);

  if (programowanie == 0)
  {
    lcd.setCursor(0, 0); //Ustawienie kursora
    lcd.print("Nacisnij przyc."); //Wyświetlenie tekstu
    lcd.setCursor(0, 1); //Ustawienie kursora
    lcd.print("programuj"); //Wyświetlenie tekstu
  }

  if (digitalRead(4) == LOW) // naciskasz przycisk programowanie
  {
    delay(20); // tak na początek czekamy aby ominąć drganie styków potem coś zmienimy
    if (digitalRead(4) == LOW && p == 0 )
    {
      p = 1; // flaga, taka zmienna aby wpadać w ten if tylko raz
      programowanie = programowanie + 1;// inkrementujesz stan flagi programowanie
      lcd.clear(); // zeruję wyświetlacz
      if (programowanie == 7) // powrót do początku czyli
      {
        programowanie = 0;// ustawienie zmiennej programowanie na 0
      }
    }
  }
  if (digitalRead(4) == HIGH && p == 1 )
  {
    p = 0; // jak puścimy przycisk programowania to zmieniamy flagę na 0
           // aby przy następnym przyciśnięciu "wstąpić" do wcześniejszego ifa
  }


  if (programowanie == 1)
  {
    pwm0 = pwm1; // przypisanie zmiennej pwm1 do pwm0, potrzebne do wyświetlacza
    wyswietlacz();
    if (digitalRead(7) == LOW)
    {
      pwm1 = analogRead(A3);
    }
  }
  if (programowanie == 2)
  {
    pwm0 = pwm2; // jak powyżej tylko pwm2
    wyswietlacz();
    if (digitalRead(7) == LOW)
    {
      pwm2 = analogRead(A3);
    }
  }
  if (programowanie == 3)
  {
    pwm0 = pwm3;// jak powyżej tylko pwm3
    wyswietlacz();
    if (digitalRead(7) == LOW)
    {
      pwm3 = analogRead(A3);
    }
  }
  if (programowanie == 4)
  {
    pwm0 = pwm4;// jak powyżej tylko pwm4
    wyswietlacz();
    if (digitalRead(7) == LOW)
    {
      pwm4 = analogRead(A3);
    }
  }
  if (programowanie == 5)
  {
    pwm0 = pwm5;// jak powyżej tylko pwm5
    wyswietlacz();
    if (digitalRead(7) == LOW)
    {
      pwm5 = analogRead(A3);
    }
  }
  if (programowanie == 6)
  {
    pwm0 = pwm6;// jak powyżej tylko pwm6
    wyswietlacz();
    if (digitalRead(7) == LOW)
    {
      pwm6 = analogRead(A3);
    }
  }
}


void wyswietlacz()
{
  lcd.setCursor(0, 0); //Ustawienie kursora
  lcd.print("Ustaw czujnik "); //Wyświetlenie tekstu
  lcd.print(programowanie);
  lcd.setCursor(0, 1); //Ustawienie kursora
  lcd.print("PWM "); //Wyświetlenie tekstu
  lcd.setCursor(4, 1);
  lcd.print("    ");
  lcd.setCursor(4, 1);
  lcd.print(pwm0);
  lcd.setCursor(8, 1);
  lcd.print("PWMU ");
  lcd.setCursor(12, 1);
  lcd.print("    ");
  lcd.setCursor(13, 1);
  lcd.print(analogRead(A3)); //Wyświetlenie tekstu
}
 
Odpowiedź
  


Wiadomości w tym wątku
RE: Jak zmusić uC do oczekiwania na argument (przycisk) - przez Agregacik - 09-05-2020, 19:35

Skocz do:


Przeglądający: 1 gości