Witam,
jestem nowy na forum i zielony w programowaniu Arduino, chciał bym wykonać wskaźnik spadku i wzrostu napięcia, informacja wyświetlana by była na wyświetlaczu takim standardowym do arduino Wyglądało by to tak. Po lewej stronie wyświetlacza napis spadek a po prawej wzrost i w momencie spadku napiecia pod napisem spadek pojawiał by się X lub kwadracik. Mam nadzieje że ktoś pomoże. Całość podłączona by była do wyjścia urządzenia na którym utrzymuje sie npiecie 2,5V i na pewne reakcje spada do 2,3v lub wzrasta do 2.8v.
pozdrawiam
Tu masz kod który co 1 s mierzy wejście analogRead(A0) jeżeli poprzedni wynik był mniejszy po prawej zaświeci się "SPADEK" jeżeli większy po lewej "WZROST" jak będzie taki sam tylko pomiar .Czego ci nie napisałem ? przelicznika napięcia , musisz się pobawić sam jako zadanie domowe
użyj najprostszego sposobu np. "int z = map(analogRead(A0) , 0, 1023 , 0, 5 );" dla logiki 5v lub "int z = map(analogRead(A0) , 0, 1023 , 0, 3.3 ); "
dodam że musisz podstawić właściwą linijkę w odpowiednie miejsce i zamienić 1 wpis na "z"
Kod:
#include <LiquidCrystal.h>
float x = 0;
float y = 0;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
x = analogRead(A0);
y = analogRead(A0);
}
void loop() {
if ( y > x ){
lcd.setCursor(0,0);
lcd.print("WZROST");
lcd.setCursor(10,0);
lcd.print(" ");}
else if( y < x ){
lcd.setCursor(10,0);
lcd.print("SPADEK");
lcd.setCursor(0,0);
lcd.print(" ");}
else if( y == x ){
lcd.setCursor(10,0);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print(" ");}
y = analogRead(A0);
delay(1000); // opóźnienie kolejnego odczytu
x = analogRead(A0);
lcd.setCursor(6,1);
lcd.print(analogRead(A0));
lcd.print(" ");
}
Dzięki za pomoc w tym temacie
ale z programowania nic nie umiem, wiem gdzie co podłączyć do arduino i znam wejscia wyjscia itp. i to tyle. Na wyświetlacz muszę poczekać bo dopiero zamówiłem wiec w tym tyg powinien być. Wracając do kodu, rozumiem że wartość odczytana przez wejście analogowe A0 jest odczytywana w bitach? a przelicznik to np 5:1024*liczba w bitach odczytana? i daje wtedy liczbe w voltach, ale gdzie to mam podstawić i jak zapisać hmm, szczerze nie wiem... jak byś mógł mi napisać ten kod w całości i wytłumaczyć kod po kodzie od początku.
Kod:
#include <LiquidCrystal.h> // deklaracja użycia biblioteki wyświetlacza alfanumerycznego
float x = 0; // deklaracja zmiennej x ( zadeklarowana w tym miejscu jest widoczna dla całego programu )
float y = 0; // j.w.
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // ustawienie pinów wyświetlacza
void setup() { // ustawienia początkowe wykonywane tylko raz przy starcie programu
lcd.begin(16, 2); // zainicjowanie wyświetlacza ( ilość kolumn , ilość wierszy )
x = analogRead(A0); // przypisanie zmiennej x wartości odczytanej z portu analogowego A0
y = analogRead(A0); // j.w.
}
void loop() { // pętla główna program wykonywany w kółko
if ( y > x ){ // zależność " jeśli (jeżeli) "
lcd.setCursor(0,0); // ostaw kursor w kolumnie 0 , lini 0
lcd.print("WZROST"); // wyświetl " to co w cudzysłowiu cokolwiek wpisane "
lcd.setCursor(10,0); // ostaw kursor w kolumnie 10 , lini 0
lcd.print(" ");} // wyświetl " jak niema nic wyświetli tyle pustych miejsc ile jest w kodzie "
else if( y < x ){
lcd.setCursor(10,0);
lcd.print("SPADEK");
lcd.setCursor(0,0);
lcd.print(" ");}
else if( y == x ){
lcd.setCursor(10,0);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print(" ");}
y = analogRead(A0);
delay(1000); // opóźnienie kolejnego odczytu
x = analogRead(A0);
int z = map(analogRead(A0) , 0, 1023 , 0, 5 ); // zadeklaruj zmienną "z" widziana ylko w pętli głównej
// tu dobrze napisałeś ;)
lcd.setCursor(6,1);
lcd.print(z); // wyświetl wartość zmiennej "z" ponieważ nie ma cudzysłowia jest to wartość a nie znaki ascii
lcd.print(" ");
}
Dzięki wielkie za ten kod, teraz już wiem co się z czym je mniejwięcej:-) I to jest już wszystko aby ten wskaźnik działał??
Czyli jeśli arduino dostanie na pinie A0 2.5 v cały czas się bedzie utrzymywać to wtedy nie będzie się wyświetlać na wyświetlaczu nic? a jeśli napięcie spadnie z 2,5V pojawi się napis spadek? i odwrotnie na wzrost
mniej więcej tak to działa
A gdzie w kodzie jest to 2,5 V? ktore jest na wejsciu A0 podawane cały czas przez urzadzenie to sa te zmienne X Y?
i tu mnie złapałeś to działa różnicowo niezależnie jakie napięcie jest nastawione tutaj masz dedykowane na 2,5v
Kod:
#include <LiquidCrystal.h> // deklaracja użycia biblioteki wyświetlacza alfanumerycznego
float y = 0; // deklaracja zmiennej x ( zadeklarowana w tym miejscu jest widoczna dla całego programu )
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // ustawienie pinów wyświetlacza
void setup() { // ustawienia początkowe wykonywane tylko raz przy starcie programu
lcd.begin(16, 2); // zainicjowanie wyświetlacza ( ilość kolumn , ilość wierszy )
y = map(analogRead(A0) , 0, 1023 , 0, 5 ); // przypisanie zmiennej y wartości odczytanej z portu analogowego A0
}
void loop() { // pętla główna program wykonywany w kółko
if ( y > 2.5 ){ // zależność " jeśli (jeżeli) "
lcd.setCursor(0,0); // ostaw kursor w kolumnie 0 , lini 0
lcd.print("WZROST"); // wyświetl " to co w cudzysłowiu cokolwiek wpisane "
lcd.setCursor(10,0); // ostaw kursor w kolumnie 10 , lini 0
lcd.print(" ");} // wyświetl " jak niema nic wyświetli tyle pustych miejsc ile jest w kodzie "
else if( y < 2.5 ){
lcd.setCursor(10,0);
lcd.print("SPADEK");
lcd.setCursor(0,0);
lcd.print(" ");}
else if( y == 2.5 ){
lcd.setCursor(10,0);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print(" ");}
y = map(analogRead(A0) , 0, 1023 , 0, 5 );
int z = map(analogRead(A0) , 0, 1023 , 0, 5 ); // zadeklaruj zmienną "z" widziana tylko w pętli głównej
// tu dobrze napisałeś ;)
lcd.setCursor(6,1);
lcd.print(z); // wyświetl wartość zmiennej "z" ponieważ nie ma cudzysłowia jest to wartość a nie znaki ascii
lcd.print(" ");
delay(1000); // opóźnienie kolejnego odczytu
}
Dzięki za ten kod, jak przyjdzie mi wyświetlacz to podłącze to wszystko i wgram kod, dam znać czy działa, to masz duże piwo za to
Będę chciał jeszcze jedną rzecz która by się wyświetlała na tym wyświetlaczu razem z tym wskaźnikiem. Ale to już jak ogarnę ten wskaźnik.
pozdrawiam
Kod nie działa... na wyświetlaczu świeci się tylko napis spadek cały czas, i w drugiej linijce raz jest 1 potem 2 i zero i tak zmienia sie co jakis czas. Ogolnie to chciałem aby spadek i wzrost był cały czas na wyswietlaczu wyswietlany a jedynie pod tymi napisami zapalały by sie np. X