Har dock kollat mängder (har tex nu 60 tabs öppna om detta) med exempel med serial.read, read.string, char och dylika grejer som jag tycker borde ha något med detta att göra. Har plockat ut grejer från andra koder som jag trodde skulle fungera men ingen av dessa har sedan fungerat ihopsatta så att säga då det har klagats på både det ena och det andra, men förstås för att jag inte haft koll.
Så nu ger jag upp och hoppas någon här kanske kan ha något tips på hur göra med skitet innan jag sliter av mig allt hår.
Jag skriver vad jag tror de olika delarna gör och så men jag har nog fel i stor del av fallen så be gentle och se mig typ som en 5 åring om ni skall förklara något. Men jag vet att det nog är fel på mer än ett ställe och att det saknas grejer och vissa kanske inte ens behöver vara där och för den delen också för att koden, föga förvånande, inte heller fungerar.
Nu skrivs det bara ut x.xxExx kontinuerligt på hela displayen, men det är ju bla för att jag inte fått ihop den seriella delen.
Jag lutar dock ev lite åt serialread, readstring, char eller dylika grejer tillsammans med vartannat på någon höger, men jag kan för den delen också vara helt ute och cykla för vad allt jag vet. :/
Nåja här är skiten om någon ev orkar bemöda sig:
Kod: Markera allt
#include <LiquidCrystal.h>
char text; // initering så att infon från serial kan läggs
// i "text" och att det är i form av karaktärer.. tror jag
LiquidCrystal lcd(40, 42, 28, 26, 24, 22);
String readString; // När den seriella strängen läses
// så handlar det om en sträng och
// inget annat, tror jag det betyder
void setup() {
char vakuum[] = "@254ACKx.xxExx;FF"; // Längden på texten sätter "char" buffertens
// storlek och namnger den
//"vakuum".. tror jag
Serial.begin(9600);
lcd.begin(20, 4);
delay(1500); // Så att displayen hinner initieras klart
lcd.print("Vacuum: "); // Självförklarande
lcd.setCursor(16, 0);
lcd.print("Torr");
lcd.setCursor(8, 0);
}
void loop() {
Serial.write("@254PR3?;FF"); // Skicka denna fråga till vakuummätaren
// och få direkt tillbaka vakuumnivån tex "@254ACK5.21E-7;FF"
// Jag vill dock bara ha texten mellan tecknen 7 och 14
while (Serial.available() == 0) { // Om det finns någon som helst data på Rx - gå
// vidare i programmet, inte annars
delay(10); // Var säker på att allt hinner komma så vänta lite
// Vad som sedan skall användas runt här för att få tag på datan och användas i slutet nedan i "vac" har jag inte
// fått ihop men gissar väl (?) på att "text" skall fyllas genom kanske tex serial.read eller nåt på något sätt men tycker mig
// ha testat både hit och dit med både det ena och det andra utan att få det att fungera som tänkt
char text[] = "@254ACKx.xxExx;FF"; // Initierar en buffert mha textens storlek så det vet
// hur mycket utrymme som skall reserveras för "text", tror jag
for (int v = 7; v < 14; v++) { // En integer "v" för att gå igenom steg 7 tom steg 14
lcd.write(text[v]); // Ta hela värdet från serieinläsningen " ??? " och gör vad
// som sägs för "v" och skriv därefter ut resultatet
// Alltså skriv ut enbart tecknen 7 tom 14 i den
// mottagna seriella texten
delay(25); // Repetera i lagom takt så att den långsamma lcd:n hänger med
// Trodde dock att hela texten skulle skrivas ut som en hel del men den
// sekvenserar igenom texten och skriver var tecken för sig, kvittar
// förstås som så och tror också det gör att jag kan dra upp hastigheten
}
}
}
Ovan kod skriver, som förväntat, ut Vacuum och Torr på rätt ställen men lika väntat så skriver den inte ut det den skall utan x.xxExx en gång, dock precis där det skall vara, men 25 ms senare skriver den ut detta kontinuerligt på hela displayen.
Skickar jag vad som helst i Serial Monitor (koden har redan skickat det den skall en gång) så slutar displayen att upprepa men det jag skriver in på Serial Monitor upprepas märkligt nog kontinuerligt där i stället.
Detta att den skriver ut på hela displayen går förstås att fixa genom att sätta displaytexten och det där i loopen med en lcd.clear tex men det är problem No 1 i början ovan som är det som är högprioriterat.