Go Down

Topic: Serial monitor to lcd (Read 232 times) previous topic - next topic

jaimy394

English above Netherland underneath.
I want to be able to read the water level on an LCD screen (1620A).
I've tried everything but don't know how to program it.

The idea is that if the water level is too low, a pump will start, but I also want to be able to read the water level on an LCD.

This is the sketch that I use and my question is whether you would like to finish it further. I am 14 and I am just starting out, so I don't have much experience.

sketch:

#include <LiquidCrystal.h>
const int waterSens = A0; // define water sensor
const int pump = 10; // define pump to pin 10
int waterVal; // define the water sensor value

const int rs = 12, and = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd (rs, and, d4, d5, d6, d7);

void setup () {
pinMode (waterSens, INPUT); // set of water sensor as an input
Serial.begin (9600); // start the serial port at 9600 bauds
pinMode (pump, OUTPUT); // set pump as an output
}

void loop () {
  int SensorValue = analogRead (waterSens);
 
  Serial.println ();

if (SensorValue> = 350)
{
  digitalWrite (pump, LOW); // if the water sensor senses water turn the pump off
}

else
{
  digitalWrite (pump, HIGH); // if it doesn't sense anything turn the pump on
  delay (650);
  digitalWrite (pump, LOW); // if it doesn't sense anything turn the pump off
  delay (2500);
  }
}

I just don't understand what I have to write for the LCD with void setup and void loop.
If you want to help me, thank you in advance.

Nederlands:
Ik wil het water niveau kunnen aflezen op een lcd scherm(1620A).
Ik heb van alles geprobeerd maar weet niet hoe ik het moet programmeren.

Het idee is dat als het water niveau te laag is een pomp aan gaat, alleen wil ik ook het water niveau kunnen aflezen op een lcd.

Dit is de sketch die ik gebruik en mijn vraag is of u het verder zou willen afmaken. Ik ben 14 en begin pas net, dus heb ik niet veel ervaring.

sketch:

#include <LiquidCrystal.h>
const int waterSens = A0; //define water sensor
const int pump = 10;//define pump to pin 10
int waterVal; //define the water sensor value

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup() {
pinMode(waterSens, INPUT);//set water sensor as an input
Serial.begin(9600);  //start the serial port at 9600 bauds
pinMode(pump, OUTPUT); //set pump as an output
}

void loop() {
  int SensorValue = analogRead(waterSens);
 
  Serial.println();

if (SensorValue >= 350)
{
  digitalWrite(pump, LOW);//if the water sensor senses water turn the pump off
}

else
{
  digitalWrite(pump, HIGH);//if it doesn't sense anything turn the pump on
  delay (650);
  digitalWrite(pump, LOW);//if it doesn't sense anything turn the pump off
  delay (2500);
  }
}

Ik snap alleen niet wat ik bij void setup en void loop moet schrijven voor de lcd.
Als u me wilt helpen alvast bedankt.

MAS3

Hoi jaimy394, welkom.

Je bent nu in  het Nederlandstalige gedeelte (ik weet niet of je onderwerp door iemand hierheen verplaatst is), dus Nederlands volstaat dan.
Je mag het natuurlijk ook zo doen als je het nu bedoelde, alleen is het dan niet al te zinvol om je sketch dan 2 keer in het bericht te zetten.
Trouwens, als je dat doet, wil je dan de volgende keer je sketch tussen code tags zetten ?
Dat ziet er dan zo uit: [code] sketch [/code]
Daarmee is je code gemakkelijker te lezen, zeer eenvoudig te kopiëren naar de IDE, en bovendien worden op die wijze allerlei mogelijk ongewenste effecten in je tekst voorkomen.

Je leeftijd maakt niet zoveel uit (een lagere leeftijd zorgt er wel voor dat je gemakkelijker leert), maar het is beter voor jezelf als je niet aan iemand vraagt om de code voor je te maken.
Beter is het om te vragen te helpen met die code.
Want als iemand de betreffende code voor jou maakt, dan leer je daar lang niet zoveel van.
Maar wanneer jij de code zelf maakt en dan gaat uitvinden war er allemaal fout kan gaan, dan leer je daar juist ontzettend veel van wat je later weer kunt gebruiken bij een volgend project.
En dat zien we hier op het forum en deze site veel liever.

Het display is er in verschillende uitvoeringen, maar ik ga er van uit dat het de goedkoopste en eenvoudigste versie is, waar 16 pinnetjes aan zitten.
Om uit te vinden hoe je die kunt gebruiken, kun je de voorbeelden (examples) uit de Arduino IDE gebruiken.
En ik denk dat dan de "Hello World" sketch een heel goede start is.
Dat vind je in het menu onder bestand - voorbeelden - LiquidCrystal- HelloWorld of onder File - Examples - LiquidCrystal - HelloWorld als je 'm net zoals ik in het Engels hebt staan.
Je kunt zo wat op je schermpje toveren, en eens kijken hoe dat werkt.
Lees wel even het commentaar in die sketch, want daarin staat hoe je de LCD moet aansluiten op je Arduino (Uno).

Je kunt dan gaan spelen met je sketch en je schermpje, en er zo achter komen hoe een en ander werkt.
Dat is natuurlijk wel een beetje werk, maar het is leuk om te doen (vind ik zelf), en heel leerzaam.

Alvast een tipje:
Er is een groot verschil tussen printen naar je schermpje, en schrijven naar dat schermpje.

Je getoonde sketch doet nu nog helemaal niets met het schermpje, behalve de aansluitpinnen van je Arduino ervoor reserveren.
Je moet de Arduino ook nog vertellen dat ie dat schermpje op die pinnen moet gaan gebruiken.

Die sketch reserveert nu dus pinnen voor het scherm, leest een analoge waarde in, stuurt een lege regel naar de seriële monitor, als de waarde aan een bepaalde voorwaarde voldoet dan gaat er een pomp aan voor 0,65 seconden en dan weer uit.
Het commentaar zegt dat er onder bepaalde voorwaarden een pomp aan en uitgezet worden, alleen klopt de bewering in dat commentaar niet helemaal.
Het is best wel belangrijk dat de gebruikte commentaren overeen komen met wat er in de code gebeurt, anders kun je die commentaren net zo goed weg laten.

Ik zou over de seriële verbinding iets anders sturen als een lege regel.
Later kun je dan hetzelfde trucje richting je LCD doen en krijg je uiteindelijk waar je hier om vraagt.

We helpen je hier graag met je code en met andere zaken waar je je mee zouden kunnen helpen, maar je zult vast wel begrijpen dat je dan ook zoveel mogelijk informatie moet geven zodat wij kunnen zien waar we je mee zouden kunnen helpen.
Dus als je al wat gespeeld hebt met de voorbeelden en je komt er dan nog niet uit, stel dan je vragen gerust nog eens in deze thread.
Er zijn hier best wel mensen die je dan graag helpen.

Veel plezier met het spelen !
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

shooter

doein je loop een Serial.print ("pomp ");
Serial.println (SensorValue);
dan voor de lcd bijv lcd.print(SensorValue);
ligt een beetje aan welke library je gebruikt. testen kan met voorbeelden die je hopelijk in de zip file kunt lezen.

paul deelen
shooter@home.nl
making controls with codesys PLC and arduino

photoncatcher

Beste jaimy394,

In het Arduinohoekje op mijn website vind je o.a. een beschrijving van hoe je op een een 'klassieke' 16x2 (met 16 pinnen) of 20x4 LCD display (met 4 pinnen) aanstuurt:

http://www.zonnepanelen.wouterlood.com/9-how-to-display-arduino-sensor-data-on-a-classic-lcd-display/


en hoe je dat doet met een i2c protocol:
http://www.zonnepanelen.wouterlood.com/arduino-bare-basics/2-using-the-i2c-expander-for-16x2-and-20x4-lcd-displays/

In jouw geval wil je zo te zien de waarde van de parameter SensorValue weergeven op een'klasiek' 16-pins LCD met behulp vanm delibary LiquidCryystal.h. Prima!



dus: aan het begin van de sketch aangeven: #include <LiquidCrystal.h>

en bij de declaraties:


LiquidCrystal lcd (12, 11, 5, 4, 3, 2);  // conventional lcd display pin usage declaration



In void setup () zet je het volgende - je hebt een 16x2 LCD display, dus:


lcd.begin (16, 2);
lcd.setCursor (0, 0);                         // eerste regel, eerste positie
lcd.print ("Hello World");

in void loop () zet je:

lcd.set Cursor (0, 1);                         // tweede regel, eerste positie
lcd.print ("waterVal = ");
lcd.print (waterVal);


Dat is het wat de lcd display betreft. Je moet wel ergens in loop () de instructie zetten:

waterVal=waterSens;
Het is mij namelijk niet helemaal duidelijk hoe waterVal is gekoppeld aan waterSens, maar dat mag je zelf uitvogelen. Het is aan te raden Serial Monitor hiervoor te gebruiken.

Succes, Photoncatcher  




Go Up