Vizitator Postat Martie 3, 2016 Partajează Postat Martie 3, 2016 Salut. Am o mica problema, ca incepator in programare arduino ( si voi ramane mereu pt ca, tot timpul apare ceva nou), si anume cum fac ca un text sa ruleze doar pe linia care o doresc. La un afisaj 16x2 este ok, dar la unul 20x4 apare textul si pe linia a 2a (din 0-3linii) asa cum se vede in poza. Acesta este codul: #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { // set up the LCD's number of columns and rows: lcd.begin(20, 4); lcd.clear(); } void loop() { lcd.setCursor(0, 0); lcd.print("elforum arduino scroll text LCD 20X4"); for (int positionCounter = 9; positionCounter < 30; positionCounter++) { // scroll one position left: lcd.scrollDisplayLeft(); // wait a bit: delay(150); } lcd.setCursor(0,1); lcd.print("0123456789"); lcd.setCursor(0,2); lcd.print("abcdefghij"); lcd.setCursor(0,3); lcd.print(" ^_^ "); delay(2000); lcd.clear(); } Link spre comentariu
nico_2010 Postat Martie 3, 2016 Partajează Postat Martie 3, 2016 Este posibil sa trebuiasca sa modifici libraria, mai precis setRowOffsets. Link spre comentariu
Vizitator Postat Martie 5, 2016 Partajează Postat Martie 5, 2016 (editat) Am reusit folosindu-ma de acest exemplu: //written for the public domain by RajDarge.#include <Wire.h> #include <LiquidCrystal_I2C.h>#define LCD_COL 20 //LCD is 20x4#define LCD_ROWS 4LiquidCrystal_I2C lcd(0x27,LCD_COL,LCD_ROWS);const char * scrollText = "Your welcome Fruitloop ";void setup() { // setup the LCD panel 20x4 here. Serial.begin(250000); lcd.init(); lcd.setCursor(0,0); lcd.backlight(); lcd.print(" Non Scrolling Text"); }void loop() { LCD_Juumpy_scroll(scrollText, LCD_COL, 1); //just keep calling the function delay(60); //make text readable }// ****** - ******// Function to scroll text// INPUT: Txt2Scroll ----- const char string to scroll// INPUT: LCD_col ----- number of columns// INPUT: t_Row ----- which row to scrollvoid LCD_Juumpy_scroll(const char* Txt2Scroll, int LCD_col, int t_Row){ static int charIndex = 0 ; //AVOIDING A GLOBAL int txtLen = strlen(Txt2Scroll);// get the length of the text char chrBuffer[LCD_col+1];//width of the sceen for (int x = 0; x < LCD_col; ++x) //do characters till the end chrBuffer[x]=char(32); //initialize chrBuffer chrBuffer[LCD_col]=char(0); // put a zero at theend if ((charIndex + LCD_col +1 ) > txtLen) //loop to end of cols { int x = 0; //use x for both loops must be outside for loop for( ; x < (txtLen-charIndex);x++) //if off end get till the end. { chrBuffer[x] = Txt2Scroll[charIndex + x]; //grab characters form Txt2scroll from the end } int currx = x; //memorise the counter for the chrBuffer for( ; x < LCD_col; x++) //continue using the x for a counter { chrBuffer[x] = Txt2Scroll[x-currx]; //Grab the text from the beginning and attach. } if (charIndex == txtLen) charIndex = 0; //reset counter } else { int x = 0; for( ; x < LCD_col; x++) { // buffer containes string of LCD_col chrBuffer[x]= Txt2Scroll[charIndex + x]; } } charIndex++; //update charindex chrBuffer[LCD_col]=char(0); lcd.setCursor(0,t_Row); //move to row of cursor. lcd.print(chrBuffer); //print it } pe care il gasiti aici: https://forum.arduino.cc/index.php?topic=360920.0 si rezultatul cu mici modificari: https://www.youtube.com/watch?v=Nf1kRbXIvPk Editat Martie 5, 2016 de Vizitator Link spre comentariu
spark Postat Martie 5, 2016 Partajează Postat Martie 5, 2016 daca tot se vorbeste despre lcd-uri , o intrebare va rog la un display lcd 20x4 (( are 20 pini ))_este un pin denumit ""metal frame"" la ce se foloseste care este rolul lui ??___multumiri cu anticipatie Link spre comentariu
Vizitator Postat Martie 6, 2016 Partajează Postat Martie 6, 2016 (editat) daca tot se vorbeste despre lcd-uri , o intrebare va rog la un display lcd 20x4 (( are 20 pini ))_este un pin denumit ""metal frame"" la ce se foloseste care este rolul lui ??___multumiri cu anticipatie Din cate stiu LCD-eurile 20x4 au doar 16 pini. Cu 20 pini nici google nu a gasit decat la afisajele grafice LCD 128x64. Poate ne dai mai multe detalii cum ar fi o poza, model,... Metal frame este de fapt rama afisajului care este legata la masa, adica la GND. Un alt exemplu de scroll textpe o singura linie: #include<LiquidCrystal.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2); String txtsc,txtnosc; void setup(){ txtnosc="Text No Scroll"; txtsc="Text Scrolling "; lcd.begin(20, 4); lcd.clear(); lcd.setCursor(0, 0); lcd.print(txtnosc); lcd.setCursor(0, 2); lcd.print(txtnosc); lcd.setCursor(0, 3); lcd.print(txtnosc); } void loop(){ lcd.setCursor(0, 1); txtsc=ScrollTxt(txtsc); lcd.print(txtsc); delay(300); } String ScrollTxt(String txt){ return txt.substring(1,txt.length()) + txt.substring(0, 1); } Editat Martie 6, 2016 de Vizitator Link spre comentariu
spark Postat Martie 6, 2016 Partajează Postat Martie 6, 2016 disply-ul se numeste DV 2041_Data Vision , este model nou ca inca nu are dattashet [/url]">http:// [/url]">http:// [/url]">http:// [/url]">http://http://postimg.org/image/oo5u2o5c5/'> banuiesc ca nu a fost facut pentru comert direct , cu toate ca se gaseste pe e-bay , polonia , rusia___are un consum de 30mA la 5,7v ( backlight ) _ iar cipul la 5v pe contrast tipic 0,7v Link spre comentariu
Vizitator Postat Martie 7, 2016 Partajează Postat Martie 7, 2016 In regula, dar ai masurat sa vezi daca ai continuitate intre pinul 18 - metal frame - si rama diplay-ului? Link spre comentariu
Vizitator Postat Martie 14, 2016 Partajează Postat Martie 14, 2016 (editat) Revin cu un nou cod : #include <LiquidCrystal.h>LiquidCrystal lcd(12, 11, 5, 4, 3, 2);char text1[] = ("01234567");char text2[] = ("89ABCDEF");void setup(){ lcd.begin(8, 2);}void loop(){ abcd(); } void abcd() { unsigned int i = 0, j = 0; // set the cursor to (0, 0): lcd.setCursor(0, 0); while (text1[i] != '0') { lcd.print(text1[i]); delay(350); i++; } lcd.setCursor(0, 1); while (text2[j] != '0') { lcd.print(text2[j]); delay(350); j++; } delay(1500); for (int positionCounter = 0; positionCounter < 8; positionCounter++) { // scroll one position left: lcd.scrollDisplayLeft(); // wait a bit: delay(250); } // clear screen for the next loop: lcd.clear();} ... si cu o intrebare: se poate ca sa nu utilizez de doua ori char text1[ ] si char text2[ ] , sa utilizez doar o singura data, de exemplu char text[ 2 ] = ("x", "y"); ps: stiu ca sunt sute de exemple pe net, dar poate este cuiva de folos si acest model in topicul Arduino_LCD text scroll . Editat Martie 14, 2016 de Vizitator Link spre comentariu
core Postat Martie 14, 2016 Partajează Postat Martie 14, 2016 const char* text[] = { "01234567", "89ABCDEF" }; Link spre comentariu
Vizitator Tanasoiu Mihai Postat Mai 11, 2016 Partajează Postat Mai 11, 2016 ma poate ajuta cineva cu un cod pentru:1)daca valoarea senzorului de umiditate este mai mica decat 300 timp de 5 minute pe LCD va aparea mesajul “ESTE SECETA” si se aprinde ledul galben. 2)daca valoarea creste pana la 900 timp de 3 minute se aprinde ledul rosu cu intensitatea maxima cand ajunge la 900(minim 300) iar pe LCD se afiseaza valoarea umiditatii. 3) daca valoarea > 900 se aprinde ledul verde cu intensitatea minima la 900 si se afiseaza mesajul “ESTE UMIDITATE MARE”. :D Link spre comentariu
loleksibolek Postat Mai 15, 2016 Partajează Postat Mai 15, 2016 Acum eu sunt megaincepator in arduino dar fa si tu o schema,un inceput de program,descrie macar mai exact ce vrei.Probabil vrei sa masori umiditatea solului,se poate face mult mai simplu cu senzori de umiditate,chestia cu afisatul si aprinsul ledului cred ca e destul de simpla,am facut asa ceva cu ajutorul colegilor de forum pt temperatura.Daca te ajuta cu ceva un sistem de udare cu 4 senzori si 4 iesiri pentru pompe da un semn,il pot modifica in anumite limite permise de ceea ce stiu dar repet,descrie mai pe larg ce doresti. O zi buna. Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum