Arduino Forum

International => Nederlands => Topic started by: sanjanakanhai on Oct 17, 2020, 12:45 pm

Title: LCD scherm
Post by: sanjanakanhai on Oct 17, 2020, 12:45 pm
Ik wil dat er nadat de tweede vraag is getoond er einde op het scherm staat

#include <Wire.h>
#include "rgb_lcd.h"
#include <SoftwareSerial.h>

SoftwareSerial RFID(2, 3); // RX and TX

rgb_lcd lcd;

const int colorR = 0;
const int colorG = 0;
const int colorB = 255;

const int BUTTONPIN = 6;
int buttonState = 0;

const int ROTARYPIN = A0;
int rotaryValue = 0;

int state = 0; //0: wachten rfid, 1: keuze maken 2:antwoord laten, even wachten en dan terug naar 0

void setup() {
 // set up the LCD's number of columns and rows:
 lcd.begin(16, 2);
 lcd.setRGB(colorR, colorG, colorB);

 // Print a message to the LCD.
 lcd.print("Scan de tag");
 //
 //  lcd.setCursor(0, 1);
 //  lcd.print("A. nee B. ja");

 pinMode(BUTTONPIN, INPUT);
 pinMode(ROTARYPIN, INPUT);
 Serial.begin(9600);

 RFID.begin(9600);   // start serial to RFID reader
 pinMode(5, OUTPUT); //buzzer on pin 6

}

void loop() {
 if (state == 0) {
   //rfid check
   if (RFID.available() > 0) {

     delay(100); // needed to allow time for the data to come in from the serial buffer.
     for (int z = 0 ; z < 14 ; z++) // read the rest of the tag
     {
       RFID.read();//content is read, but not stored in this example
     }
     RFID.flush();
     beep();

     state = state + 1;
   }
   //als kaart is gescand state = state + 1

 } else if (state == 1) {
   //vraag tonen

   //keuze laten zien
   rotaryValue = analogRead(ROTARYPIN);
   //Serial.println(rotaryValue);
   if (rotaryValue < 512) {
     lcd.setCursor(0, 0);
     lcd.print("grãos de mamão?");
     lcd.setCursor(0, 1);
     lcd.print("A. NÃO B. sim");
   } else {
     lcd.setCursor(0, 0);
     lcd.print("grãos de mamão?");
     lcd.setCursor(0, 1);
     lcd.print("A. não B. SIM");
   }

   //keuze vastleggen
   buttonState = digitalRead(BUTTONPIN);
   if (buttonState == 1) {
     if (rotaryValue < 512) {
       //antwoord a gekozen
       Serial.println("antwoord a gekozen");
       state = state + 1;
     } else {
       //antwoord b gekozen
       Serial.println("antwoord b gekozen");
       state = state + 1;
     }
     delay(250);
   }
 } else if (state == 2) {
   //antwoord laten zien
   lcd.setCursor(0, 0);
   lcd.print("Juiste antwoord:");
   lcd.setCursor(0, 1);
   lcd.print("A. NÃO B. sim");
   delay(7000);
   state = state + 1 ;
 } else if (state == 3) {
   lcd.setCursor(0, 0);
   lcd.print("Scan de tag     ");
   lcd.setCursor(0, 1);
   lcd.print("                ");
   if (RFID.available() > 0) {

     delay(100); // needed to allow time for the data to come in from the serial buffer.
     for (int z = 0 ; z < 14 ; z++) // read the rest of the tag
     {
       RFID.read();//content is read, but not stored in this example
     }
     RFID.flush();
     beep();

     state = state + 1;
   }
 } else if (state == 4) {
   //keuze laten zien
   rotaryValue = analogRead(ROTARYPIN);
   //Serial.println(rotaryValue);
   if (rotaryValue < 512) {
     lcd.setCursor(0, 0);
     lcd.print("mandioca crua?  ");
     lcd.setCursor(0, 1);
     lcd.print("A.CRU B.cozinhou");
   } else {
     lcd.setCursor(0, 0);
     lcd.print("mandioca crua?  ");
     lcd.setCursor(0, 1);
     lcd.print("A.cru B.COZINHOU");
   }

   //keuze vastleggen
   buttonState = digitalRead(BUTTONPIN);
   if (buttonState == 1) {
     if (rotaryValue < 512) {
       //antwoord a gekozen
       Serial.println("antwoord a gekozen");
       state = state + 1;
     } else {
       //antwoord b gekozen
       Serial.println("antwoord b gekozen");
       state = state + 1;
     }
     delay(250);
   }

 } else if (state == 5) {
   //antwoord laten zien
   lcd.setCursor(0, 0);
   lcd.print("Juiste antwoord:");
   lcd.setCursor(0, 1);
   lcd.print("A.cru B.COZINHOU");
   delay(7000);
   state = 3 ;
 }


}//loop

void beep() {
 analogWrite(5, 200);
 delay(200);
 analogWrite(5, 0);
}
Title: Re: LCD scherm
Post by: sanjanakanhai on Oct 17, 2020, 02:17 pm
Code: [Select]


#include <Wire.h>
#include "rgb_lcd.h"
#include <SoftwareSerial.h>

SoftwareSerial RFID(2, 3); // RX and TX

rgb_lcd lcd;

const int colorR = 0;
const int colorG = 0;
const int colorB = 255;

const int BUTTONPIN = 6;
int buttonState = 0;

const int ROTARYPIN = A0;
int rotaryValue = 0;

int state = 0; //0: wachten rfid, 1: keuze maken 2:antwoord laten, even wachten en dan terug naar 0

void setup() {
 // set up the LCD's number of columns and rows:
 lcd.begin(16, 2);
 lcd.setRGB(colorR, colorG, colorB);

 // Print a message to the LCD.
 lcd.print("Scan de tag");
 //
 //  lcd.setCursor(0, 1);
 //  lcd.print("A. nee B. ja");

 pinMode(BUTTONPIN, INPUT);
 pinMode(ROTARYPIN, INPUT);
 Serial.begin(9600);

 RFID.begin(9600);   // start serial to RFID reader
 pinMode(5, OUTPUT); //buzzer on pin 6

}

void loop() {
 if (state == 0) {
   //rfid check
   if (RFID.available() > 0) {

     delay(100); // needed to allow time for the data to come in from the serial buffer.
     for (int z = 0 ; z < 14 ; z++) // read the rest of the tag
     {
       RFID.read();//content is read, but not stored in this example
     }
     RFID.flush();
     beep();

     state = state + 1;
   }
   //als kaart is gescand state = state + 1

 } else if (state == 1) {
   //vraag tonen

   //keuze laten zien
   rotaryValue = analogRead(ROTARYPIN);
   //Serial.println(rotaryValue);
   if (rotaryValue < 512) {
     lcd.setCursor(0, 0);
     lcd.print("grãos de mamão?");
     lcd.setCursor(0, 1);
     lcd.print("A. NÃO B. sim");
   } else {
     lcd.setCursor(0, 0);
     lcd.print("grãos de mamão?");
     lcd.setCursor(0, 1);
     lcd.print("A. não B. SIM");
   }

   //keuze vastleggen
   buttonState = digitalRead(BUTTONPIN);
   if (buttonState == 1) {
     if (rotaryValue < 512) {
       //antwoord a gekozen
       Serial.println("antwoord a gekozen");
       state = state + 1;
     } else {
       //antwoord b gekozen
       Serial.println("antwoord b gekozen");
       state = state + 1;
     }
     delay(250);
   }
 } else if (state == 2) {
   //antwoord laten zien
   lcd.setCursor(0, 0);
   lcd.print("Juiste antwoord:");
   lcd.setCursor(0, 1);
   lcd.print("A. NÃO B. sim");
   delay(7000);
   state = state + 1 ;
 } else if (state == 3) {
   lcd.setCursor(0, 0);
   lcd.print("Scan de tag     ");
   lcd.setCursor(0, 1);
   lcd.print("                ");
   if (RFID.available() > 0) {

     delay(100); // needed to allow time for the data to come in from the serial buffer.
     for (int z = 0 ; z < 14 ; z++) // read the rest of the tag
     {
       RFID.read();//content is read, but not stored in this example
     }
     RFID.flush();
     beep();

     state = state + 1;
   }
 } else if (state == 4) {
   //keuze laten zien
   rotaryValue = analogRead(ROTARYPIN);
   //Serial.println(rotaryValue);
   if (rotaryValue < 512) {
     lcd.setCursor(0, 0);
     lcd.print("mandioca crua?  ");
     lcd.setCursor(0, 1);
     lcd.print("A.CRU B.cozinhou");
   } else {
     lcd.setCursor(0, 0);
     lcd.print("mandioca crua?  ");
     lcd.setCursor(0, 1);
     lcd.print("A.cru B.COZINHOU");
   }

   //keuze vastleggen
   buttonState = digitalRead(BUTTONPIN);
   if (buttonState == 1) {
     if (rotaryValue < 512) {
       //antwoord a gekozen
       Serial.println("antwoord a gekozen");
       state = state + 1;
     } else {
       //antwoord b gekozen
       Serial.println("antwoord b gekozen");
       state = state + 1;
     }
     delay(250);
   }

 } else if (state == 5) {
   //antwoord laten zien
   lcd.setCursor(0, 0);
   lcd.print("Juiste antwoord:");
   lcd.setCursor(0, 1);
   lcd.print("A.cru B.COZINHOU");
   delay(7000);
   state = 3 ;
 }


}//loop

void beep() {
 analogWrite(5, 200);
 delay(200);
 analogWrite(5, 0);
}
Title: Re: LCD scherm
Post by: sterretje on Oct 17, 2020, 04:21 pm
Voeg een extra state toe waarin je "einde" op het scherm zet?
Title: Re: LCD scherm
Post by: sanjanakanhai on Oct 17, 2020, 04:22 pm
Ja heb ik geprobeerd, maar ik snap niet in welke state hij dan zit
Title: Re: LCD scherm
Post by: MAS3 on Oct 18, 2020, 01:26 am
Ik heb even gekeken, en in de snelligheid 5 states gezien.
Na de 5e state zet je state terug op 3 en ga je een nieuwe tag lezen.
Wanneer je dat niet wil, maak je na 5 niet 3 maar 6.
In state 6 kun je je einde / fim bericht laten zien.
Je moet er even over nadenken of je daarna alsnog naar state 3 wil zodat de volgende kandidaat aan de slag kan.

Overigens zou ik niet if en else if gebruiken, maar switch...case (klik !) (https://www.arduino.cc/reference/en/language/structure/control-structure/switchcase/).

Maar dat heeft verder niet zoveel met jouw vraag te maken.
Title: Re: LCD scherm
Post by: sanjanakanhai on Oct 18, 2020, 01:22 pm
Ik heb het geprobeerd, maar dan staat er op het startscherm Scan de tag en Einde. Ook laat hij dan niet meer de antwoorden zien. Zou  je mij ander de aangepaste code kunnen sturen?
Title: Re: LCD scherm
Post by: sterretje on Oct 18, 2020, 01:46 pm
Laat je poging zioen en iemand kan misschien aanduiden waar het fout gaat.
Title: Re: LCD scherm
Post by: sanjanakanhai on Oct 18, 2020, 01:54 pm
Code: [Select]
#include <Wire.h>
#include "rgb_lcd.h"
#include <SoftwareSerial.h>

SoftwareSerial RFID(2, 3); // RX and TX

rgb_lcd lcd;

const int colorR = 0;
const int colorG = 0;
const int colorB = 255;

const int BUTTONPIN = 6;
int buttonState = 0;

const int ROTARYPIN = A0;
int rotaryValue = 0;

int state = 0; //0: wachten rfid, 1: keuze maken 2:antwoord laten, even wachten en dan terug naar 0

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  lcd.setRGB(colorR, colorG, colorB);

  // Print a message to the LCD.
  lcd.print("Scan de tag");
  //
  //  lcd.setCursor(0, 1);
  //  lcd.print("A. nee B. ja");

  pinMode(BUTTONPIN, INPUT);
  pinMode(ROTARYPIN, INPUT);
  Serial.begin(9600);

  RFID.begin(9600);   // start serial to RFID reader
  pinMode(5, OUTPUT); //buzzer on pin 6

}

void loop() {
  if (state == 0) {
    //rfid check
    if (RFID.available() > 0) {

      delay(100); // needed to allow time for the data to come in from the serial buffer.
      for (int z = 0 ; z < 14 ; z++) // read the rest of the tag
      {
        RFID.read();//content is read, but not stored in this example
      }
      RFID.flush();
      beep();

      state = state + 1;
    }
    //als kaart is gescand state = state + 1

  } else if (state == 1) {
    //vraag tonen

    //keuze laten zien
    rotaryValue = analogRead(ROTARYPIN);
    //Serial.println(rotaryValue);
    if (rotaryValue < 512) {
      lcd.setCursor(0, 0);
      lcd.print("grãos de mamão?");
      lcd.setCursor(0, 1);
      lcd.print("A. NÃO B. sim");
    } else {
      lcd.setCursor(0, 0);
      lcd.print("grãos de mamão?");
      lcd.setCursor(0, 1);
      lcd.print("A. não B. SIM");
    }

    //keuze vastleggen
    buttonState = digitalRead(BUTTONPIN);
    if (buttonState == 1) {
      if (rotaryValue < 512) {
        //antwoord a gekozen
        Serial.println("antwoord a gekozen");
        state = state + 1;
      } else {
        //antwoord b gekozen
        Serial.println("antwoord b gekozen");
        state = state + 1;
      }
      delay(250);
    }
  } else if (state == 2) {
    //antwoord laten zien
    lcd.setCursor(0, 0);
    lcd.print("Juiste antwoord:");
    lcd.setCursor(0, 1);
    lcd.print("A. NÃO B. sim");
    delay(7000);
    state = state + 1 ;
  } else if (state == 3) {
    lcd.setCursor(0, 0);
    lcd.print("Scan de tag     ");
    lcd.setCursor(0, 1);
    lcd.print("                ");
    if (RFID.available() > 0) {

      delay(100); // needed to allow time for the data to come in from the serial buffer.
      for (int z = 0 ; z < 14 ; z++) // read the rest of the tag
      {
        RFID.read();//content is read, but not stored in this example
      }
      RFID.flush();
      beep();

      state = state + 1;
    }
  } else if (state == 4) {
    //keuze laten zien
    rotaryValue = analogRead(ROTARYPIN);
    //Serial.println(rotaryValue);
    if (rotaryValue < 512) {
      lcd.setCursor(0, 0);
      lcd.print("mandioca crua?  ");
      lcd.setCursor(0, 1);
      lcd.print("A.CRU B.cozinhou");
    } else {
      lcd.setCursor(0, 0);
      lcd.print("mandioca crua?  ");
      lcd.setCursor(0, 1);
      lcd.print("A.cru B.COZINHOU");
    }

    //keuze vastleggen
    buttonState = digitalRead(BUTTONPIN);
    if (buttonState == 1) {
      if (rotaryValue < 512) {
        //antwoord a gekozen
        Serial.println("antwoord a gekozen");
        state = state + 1;
      } else {
        //antwoord b gekozen
        Serial.println("antwoord b gekozen");
        state = state + 1;
      }
      delay(250);
    }

  } else if (state == 5) {
    //antwoord laten zien
    lcd.setCursor(0, 0);
    lcd.print("Juiste antwoord:");
    lcd.setCursor(0, 1);
    lcd.print("A.cru B.COZINHOU");
    delay(7000);
   state = 6 ;
  }


  if (state == 6) {
    lcd.setCursor(0, 0);
    lcd.print("Einde           ");
  } else {
    lcd.setCursor(0, 1);
    lcd.print("Einde           ");

  }

}//loop

void beep() {
  analogWrite(5, 200);
  delay(200);
  analogWrite(5, 0);
}
Title: Re: LCD scherm
Post by: sterretje on Oct 18, 2020, 02:12 pm
Quote
Code: [Select]
  if (state == 6) {
    lcd.setCursor(0, 0);
    lcd.print("Einde           ");
  } else {
    lcd.setCursor(0, 1);
    lcd.print("Einde           ");
  }

Ongeacht de staat print je nu einde, of op de eerste regel of op de tweede regel.  Je wilt dat, als ik je goed begrijp, echter alleen zien als de state gelijk is aan 6. Dus je kunt het else gedeelte weggooien (dat zet het nemelijk op de tweede regel).

Code: [Select]
  if (state == 6) {
    lcd.setCursor(0, 0);
    lcd.print("Einde           ");
  }


In je vorige versies van het programma ging je ook terug naar state 3. Als dat nog steeds nodig is, kun je het uitbreiden
Code: [Select]
  if (state == 6) {
    lcd.setCursor(0, 0);
    lcd.print("Einde           ");
    delay(3000);
    state = 3;
  }

Je zult waarschijnlijk ook de tweede regel willen wissen; misschien eerst het scherm wissen met lcd.clear() in het begin van state 6.
Title: Re: LCD scherm
Post by: sanjanakanhai on Oct 18, 2020, 02:39 pm
Het werkt! Dank je wel. Weet iemand nog wat leuks wat ik met de LCD kan doen?
Title: Re: LCD scherm
Post by: MAS3 on Oct 18, 2020, 03:28 pm
Wanneer je lcd.clear doet, hoef je daarna niet meer de cursor op 0,0 te zetten, want die staat daar dan al.


Och, er zijn zoveel mogelijkheden.

Maar voor jouw sketch:
Je gebruikt een RGB LCD.
Volgens mij betekent dat dat je de backlight van je schermpje van een willekeurige kleur kunt voorzien.
Nu maak je ook ergens een keer een piepje van een vijfde seconde zie ik.
Maar je kunt ook bijvoorbeeld je scherm rood laten oplichten als het antwoord fout is, en groen als het juist is.
En een andere kleur als er nog niets te zeggen is, zoals wit (-achtig).
Daarbij ga ik er wel van uit dat je inderdaad zo'n schermpje gebruikt, en dat het ook dusdanig is aangesloten dat je de kleur kunt veranderen.


Zelf heb ik ooit (toen ik net begonnen was met Arduino) een LCD keyboard shield gekocht.
Daar heb ik een sketchje voor gemaakt dat ik met de toetsen die daar op zitten door alle tekens die het ding kan afbeelden kon bladeren, en dat er dan bij stond welk tekennummer het was.
Later heb ik dat uitgebreid met een menu'tje waarmee ik uiteindelijk de teksten in verschillende talen kon afbeelden, de achtergrond helderheid kon instellen en daarna de achtergrond kon laten knipperen wanneer er een toetsdruk geregistreerd werd (dat kon apart worden aan en uitgezet in het menu).
Wat ik daarvoor terug kreeg was allemaal niet erg zinvol.
Maar ik heb er enorm veel van geleerd en das de werkelijke winst.
Want alles wat ik in de uiteindelijke sketch heb gemaakt, heb ik zelf uitgedokterd en ik heb niet van alles bij elkaar geraapt aan sketches en die in mijn eigen sketch gecombineerd.
Voor mij is dat een erg goede manier om te leren.


Een LCD is ook een heel goede debug hulp.
Je kunt daarop van alles zichtbaar maken zodat je kunt volgen wat er allemaal gebeurt in je sketch.
Title: Re: LCD scherm
Post by: sanjanakanhai on Oct 18, 2020, 03:35 pm
Het is inderdaad een leuk idee om het scherm rood te laten worden als het antwoord fout is en groen als het goed is. Hoe moet ik dit coderen? Zou ik daar ook een geluidje bij kunnen doen?
Title: Re: LCD scherm
Post by: sterretje on Oct 18, 2020, 03:51 pm
Quote
Het is inderdaad een leuk idee om het scherm rood te laten worden als het antwoord fout is en groen als het goed is. Hoe moet ik dit coderen?
Misschien eens kijken naar de voorbeelden die bij de bibliotheek horen?

Title: Re: LCD scherm
Post by: sanjanakanhai on Oct 18, 2020, 04:14 pm
Ik heb even gekeken, maar er staat alleen om de kleur eenmalig te veranderen.
Title: Re: LCD scherm
Post by: sterretje on Oct 18, 2020, 05:45 pm
OK, waar heb je de bibliotheek vandaan gehaald?

Of laat die code even zien.
Title: Re: LCD scherm
Post by: sanjanakanhai on Oct 18, 2020, 05:57 pm
Code: [Select]
/*
  setColor.ino
  2013 Copyright (c) Seeed Technology Inc.  All right reserved.

  Author:Loovee
  2013-10-15

  Grove - Serial LCD RGB Backlight demo.
  you can set color by serial input, input "rrr ggg bbb"

  rrr means red, 0-255, eg: 005, 015, 135
  ggg means green
  bbb means blue
 
  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.

  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General Public
  License along with this library; if not, write to the Free Software
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

#include <Wire.h>
#include "rgb_lcd.h"

rgb_lcd lcd;

char dtaUart[15];
char dtaLen = 0;

void setup()
{
    Serial.begin(115200);
    // set up the LCD's number of columns and rows:
    lcd.begin(16, 2);
    // Print a message to the LCD.
    lcd.print("set cllor");
}

void loop()
{

    if(dtaLen == 11)
    {
        int r = (dtaUart[0]-'0')*100 + (dtaUart[1] - '0')*10 + (dtaUart[2] - '0');          // get r
        int g = (dtaUart[4]-'0')*100 + (dtaUart[5] - '0')*10 + (dtaUart[6] - '0');
        int b = (dtaUart[8]-'0')*100 + (dtaUart[9] - '0')*10 + (dtaUart[10] - '0');
       
        dtaLen = 0;
       
        lcd.setRGB(r, g, b);

        Serial.println("get data");
       
        Serial.println(r);
        Serial.println(g);
        Serial.println(b);
        Serial.println();

    }
}

void serialEvent()
{
    while(Serial.available())
    {
        dtaUart[dtaLen++] = Serial.read();
    }
}

/*********************************************************************************************************
  END FILE
*********************************************************************************************************/

Ik gebruik de volgende Library: Grove_LCD_RGB_Backlight-master
Title: Re: LCD scherm
Post by: sanjanakanhai on Oct 18, 2020, 06:10 pm
Code: [Select]
/*
  CustomCharacter.ino
  2013 Copyright (c) Seeed Technology Inc.  All right reserved.

  Author:Loovee
  2013-9-18

  Grove - Serial LCD RGB Backlight demo.

  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.

  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General Public
  License along with this library; if not, write to the Free Software
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

#include <Wire.h>
#include "rgb_lcd.h"

rgb_lcd lcd;

// make some custom characters:
byte heart[8] = {
    0b00000,
    0b01010,
    0b11111,
    0b11111,
    0b11111,
    0b01110,
    0b00100,
    0b00000
};

byte smiley[8] = {
    0b00000,
    0b00000,
    0b01010,
    0b00000,
    0b00000,
    0b10001,
    0b01110,
    0b00000
};

byte frownie[8] = {
    0b00000,
    0b00000,
    0b01010,
    0b00000,
    0b00000,
    0b00000,
    0b01110,
    0b10001
};

byte armsDown[8] = {
    0b00100,
    0b01010,
    0b00100,
    0b00100,
    0b01110,
    0b10101,
    0b00100,
    0b01010
};

byte armsUp[8] = {
    0b00100,
    0b01010,
    0b00100,
    0b10101,
    0b01110,
    0b00100,
    0b00100,
    0b01010
};


void setup()
{

    lcd.begin(16, 2);
 #if 1   
    // create a new character
    lcd.createChar(0, heart);
    // create a new character
    lcd.createChar(1, smiley);
    // create a new character
    lcd.createChar(2, frownie);
    // create a new character
    lcd.createChar(3, armsDown);
    // create a new character
    lcd.createChar(4, armsUp);
#endif
    // set up the lcd's number of columns and rows:
   
   
    lcd.setCursor(0, 0);
    // Print a message to the lcd.
    lcd.print("I ");
    lcd.write((unsigned char)0);
    lcd.print(" Arduino! ");
    lcd.write(1);
}

void loop()
{
    // read the potentiometer on A0:
    int sensorReading = analogRead(A0);
    // map the result to 200 - 1000:
    int delayTime = map(sensorReading, 0, 1023, 200, 1000);
    // set the cursor to the bottom row, 5th position:
    lcd.setCursor(4, 1);
    // draw the little man, arms down:
    lcd.write(3);
    delay(delayTime);
    lcd.setCursor(4, 1);
    // draw him arms up:
    lcd.write(4);
    delay(delayTime);
}

/*********************************************************************************************************
  END FILE
*********************************************************************************************************/

Ook zou ik het poppetje (arm up en down) na het woord einde willen laten zien. Het lukt mij ook niet om dat te doen
Title: Re: LCD scherm
Post by: sterretje on Oct 18, 2020, 07:55 pm
Dat programma (reply #15) moet in principe iedere keer een nieuwe kleur geven als je wat ingeeft in the seriele monitor.

Heb je dat geprobeerd? Wat was het resultaat?
Snap je hoe het programma werkt?
Title: Re: LCD scherm
Post by: sanjanakanhai on Oct 18, 2020, 08:20 pm
Ik werk nog niet zo lang met dit programma. Daarom heb ik jullie hulp hard nodig! Dank hiervoor. Ik moet dinsdag mijn code inleveren voor een project op school.
Title: Re: LCD scherm
Post by: sterretje on Oct 18, 2020, 08:38 pm
Ik denk dat we over verschillende programmas praten ;)

Ik praat over het programma dat je geschreven hebt en het programma in reply #15.

Waar praat jij over?
Title: Re: LCD scherm
Post by: sanjanakanhai on Oct 18, 2020, 09:54 pm
Hahaha. Ik had het over Arduino in het algemeen. Ik snap de code voor de set color wel een beetje, maar ik snap niet hoe ik het in mijn definitieve code moet zetten. Dat hij bijvoorbeeld groen wordt als je het antwoord goede hebt gegeven.
Title: Re: LCD scherm
Post by: MAS3 on Oct 19, 2020, 12:10 am
Nou, echt moeilijk is dat niet hoor.
Maar alleen wanneer je die sketch hebt geprobeerd en het ook werkt.

In deze regel word de kleur ingesteld:

Code: [Select]
       lcd.setRGB(r, g, b);

Heel veel eenvoudiger gaat het niet.

Om een rode backlight te krijgen doe je dit:

Code: [Select]
       lcd.setRGB(255, 0, 0);

En voor groen:

Code: [Select]
       lcd.setRGB(0, 255, 0);

Voor een geel/oranje achtergrond in andere situaties kun je dit doen:

Code: [Select]
       lcd.setRGB(255, 180, 0);

Je kunt zelf de kleur bepalen door daar mee te spelen.
Dit stukje code moet je dus met de juiste waarden neerzetten op de juiste plaats in je sketch, waarna de kleur zou moeten veranderen totdat jij 'm weer anders instelt.




Nog een andere, algemene tip:
De voorbeelden zijn niet meer dan dat.
Je leert er erg weinig van om die te uploaden naar je Arduino en te kijken wat het doet.
Pas als je die code aanpast en dan uploadt, ga je leren hoe het werkelijk in elkaar steekt.
Doe dat dus met alle voorbeelden die je wil bestuderen.
Juist voor je RGB LCD is dat naast leerzaam ook erg leuk, want je kunt dus letterlijk zien wat er dan gebeurt.