Hallo mensen,
Het probleem wat ik heb is het volgende; de powertip heeft plaats voor 20 karakters.
Maar wat ik nu zie is dat als het aantal karakters op een regel de 12 overschrijdt, het teveel aan karakters op de volgende regel wordt weergegeven. Ik zal het even proberen weer te geven in een voorbeeld.
De tekst op regel 1 van de lcd is: aantal pulsen: 1. Deze tekst wordt juist weergegeven maar op regel 2 staat dan:
n:1.
De volgende tekst zou volgens mijn code op regel 2 moeten beginnen maar wordt op regel 3 weergegeven. Deze tekst is: pulstijd:3sec waarbij op regel 4 dan c wordt weergegeven. Dus kort gezegd, vanaf het dertiende karakter in een regel wordt de tekst herhaald op de volgende regel.
Volgens mij heb ik de juiste (standaard) lcd library om deze lcd aan te sturen en is de powertip hitachi compatible.
Misschien heeft iemand van jullie een idee wat er fout gaat want googelen op dit probleem levert niet veel resultaten op.
Hieronder mijn code
// invoegen bibliotheek
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
//instellen vaste variabelen voor tellen pulsjes
const int KwhPulse = 13; // puls aangesloten op digitale ingang 13
// instellen variabelen voor bijhouden aantal pulsjes
int pulseState = 1; // huidige staat van kwh puls, deze is "actief laag" dus hier inverteren
unsigned long KwhpulseCounter = 0; // teller voor aantal pulsen
int lastPulseState = 1; // vorige staat van Kwh puls
// instellen variabelen berekenen pulstijd
unsigned long pulseAan = 0; // pulse aan en uit maken gebruik van millis dus long gebruiken
unsigned long pulseUit = 1;
unsigned long verstrekenTijd = 0; // en het verschil ook
unsigned int KWH_cijfer; // cijfers voor de komma
unsigned int KWH_decimaal; // cijfers achter de komma
//instellen variabelen berekenen Kwh en huidig vermogen
unsigned long currentWatts = 0; // we kunnen max 65536 Watts verwerken. Anders unsigned long gebruiken
unsigned long totalKwh = 0;
//setup
void setup() {
pinMode(KwhPulse, INPUT); // maak van (digitale)pin 13 een input
//Serial.begin(9600); // seriele communicatie op 9600 baud
lcd.begin(20,4); // lcd met 4 regels en 20 karakters per regel
}
void loop() {
char kwhStr[9];
pulseState = digitalRead(KwhPulse); // lees waarde digitale ingang en bewaar de waarde in "pulseState"
if (pulseState != lastPulseState) { // vergelijk de staat van de Kwhpulse met zij vorige staat
if (pulseState == LOW) { // als de huidige staat laag is ging de puls van uit naar aan
KwhpulseCounter++; // als de staat is veranderd, verhoog de teller
lcd.setCursor(0,0); // zet cursor op de eerste regel en eerse karakter
lcd.print("aantal pulsen:"); // schrijf tekst naar lcd
lcd.print(KwhpulseCounter); // schrijf inhoud van var "KwhulseCounter" naar lcd
pulseAan = millis(); //tijd in milliseconden vanaf start arduino
verstrekenTijd = (pulseAan - pulseUit) / 1000; //gemeten tijd tussen twee pulsen
pulseUit = pulseAan; //bewaren voor volgende ronde
lcd.setCursor(0,1); // zet cursor op tweede regel en eerste karakter
lcd.print("Pulstijd:"); // schrijf tekst naar lcd
lcd.print(verstrekenTijd); // schrijf inhoud van var "verstrekenTijd" naar lcd
lcd.print("sec"); // schrijf tekst naar lcd