09-05-2020, 19:35
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
}
