/* * Denne bartesten viser i prinsipp hvordan en skal skrive * hver linje i hvert bar-vindu. * Snudd visning til å vise fuktighet i jorden * 13.02.2023 la2yg */ // include the library code: #include // initialize the library by associating any needed LCD interface pin // with the arduino pin number it is connected to const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); int jordPin = A0; int analogJord; // maaleverdi av jordmotstand 0 - 2023 int grafStrek; // verdi i siste ufullstendige bar < 5 streker int oldStrek; // forskjellig fra forrige avlesning? int helBar; // antall hele bar (a 5 streker x 16) int restBar; float delStrek; int battPin = A5; int analogBatt; // omraadet 0 - 1023 int battVolt; // ca 204 float volt; // spenningsverdi med 2 siff etter komma char infotekst; int b; int i; // make some custom characters: byte bar0[8] = { 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000 }; byte bar1[8] = { 0b10000, 0b10000, 0b10000, 0b10000, 0b10000, 0b10000, 0b10000, 0b10000 }; byte bar2[8] = { 0b11000, 0b11000, 0b11000, 0b11000, 0b11000, 0b11000, 0b11000, 0b11000 }; byte bar3[8] = { 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100, 0b11100 }; byte bar4[8] = { 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110 }; byte bar5[8] = { 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111 }; void setup() { Serial.begin(9600); // initialize LCD and set up the number of columns and rows: lcd.begin(16, 2); // create a new character lcd.createChar(0, bar0); // create a new character lcd.createChar(1, bar1); // create a new character lcd.createChar(2, bar2); // create a new character lcd.createChar(3, bar3); // create a new character lcd.createChar(4, bar4); // create a new character lcd.createChar(5, bar5); // set the cursor to the top left lcd.setCursor(0, 0); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(" "); lcd.print("Batt.spg="); lcd.setCursor(0, 0); delay(2000); delStrek = 12.7875; oldStrek = 0; battVolt = 204; } // Eksempel paa hvordan sette opp rnd // print a random number from 10 to 19 // randNumber = random(10, 20); // Serial.println(randNumber); void loop() { // leser av batterispennng analogBatt = analogRead(battPin); // leser analogverdien volt = analogBatt/battVolt; lcd.setCursor(7, 1); lcd.print(volt); lcd.print(" V "); // leser av jordmotatanden analogJord = analogRead(jordPin); // leser av analogverdi av jordmotstand Serial.print("analogJord = "); // Serial.println(analogJord); analogJord = 1023 - analogJord; Serial.println(analogJord); grafStrek = (analogJord/delStrek); // antall grafiske streker helBar = grafStrek/5; restBar = (grafStrek -(helBar * 5)); for(b = 0; b < 16; b++) { // skriver ut alle hele blokker if((b == 0) && (helBar == 0)) { Serial.print("Foerste og andre helBar-verdi: "); Serial.println(helBar); lcd.setCursor(0, 0); lcd.write("Klar til dyst "); b=16; delay(500); } if(b < (helBar +1)) { lcd.setCursor(b, 0); lcd.write((byte) 5); Serial.print("Skriver ut helBar nr; "); Serial.println(b); } if(b == (helBar + 1)) { lcd.setCursor(b, 0); lcd.write((byte) restBar); Serial.print("Skriver ut restBar nr; "); Serial.println(b); } if(b > (helBar +1)) { lcd.setCursor(b, 0); lcd.write((byte) 0); Serial.print("Skriver naa blanke felt; "); Serial.println(b); } } Serial.println(); delay(500); }