Funkar fint om än kanske inte efter konstens regler som att tex displayens tecken blinkar lite grand (om man inte tittar rakt på den utan från sidan) i takt med uppdateringsfrekvensen som datan skickas med till sensorn då ju allt går i samma loop, men men och jag är mer än nybörjare i detta så det får gå as is as now.
Det jag hade velat ha implementerat så enkelt som möjligt är att kunna ställa in vakuumnivån genom displayen med knappar så när rätt nivå nås eller lägre av inställt värde så går en utgång hög tills nivån går över satt värde igen då den går låg.
Så tex första siffran ställs in med en upp och en ned knapp, stega vidare till nästa siffra med en knapp och göra samma tills alla är klara och då trycka på en annan knapp som både startar en vakuumpump och öppnar en ventil. Pumpen går då tills rätt nivå eller lägre nåtts vilket stänger ventilen till pumpen vilket då håller vakuumnivån tills det stiger över satt värde igen då ventilen öppnas, osv.
Har ingen aning hur detta kan göras, några tips/hänvisningar åt rätt håll till grejer jag skall titta på för att få ihop något sådant? Då har jag något att gå efter och kanske få ihop något med och kolla upp mer för jag hittar dock inga konkreta exempel på något liknande på nätet som det är nu.
Sensorn ger även ut en linjär analog utgång men då blir det en massa jobb med att anpassa värdet exakt till ADCn och det blir ändå inte exakt vilket jag behöver och spannet är dessutom även på tok för stort för mätaren jag använder, men med en enskild grovvakuummätare så hade det kanske funkat, men då blir det ev en annan tråd.
Gick bara att få ihop nedan kod efter en hel del hjälp härifrån och genomkoll av exempel på nätet om olika grejer, jag är som ni nog alla vet mer än nybörjare på detta så helst gärna ev info därefter.
Kod: Markera allt
#include <LiquidCrystal.h>
LiquidCrystal lcd(40, 42, 28, 26, 24, 22);
String value;
void setup() {
Serial.begin(9600);
Serial.setTimeout(75); //Hade ingen aning om detta innan vilket skapade en jäkla massa huvudbry
pinMode(13, OUTPUT);
lcd.begin(20, 4);
lcd.clear();
delay(1000); //Så att sensorer och allt hinner stabilisera sig
}
void loop() {
delay(200);
Serial.print("@254PR3?;FF"); //Skicka förfråga till sensorn om vakuumnivå 5 ggr i sekunden (klarar 10 ggr men tyvärr inte displayen)
//och få tillbaka tex @254ACK6.48E-7;FF där siffrorna i mitten är värdet
if (Serial.available()) { //Finns det någon data i den seriella bufferten?
digitalWrite(13, LOW); //Om ja gå vidare
lcd.clear();
lcd.print("Vacuum: ");
lcd.setCursor(16, 0);
lcd.print("Torr");
lcd.setCursor(8, 0);
value = Serial.readString();
for (int mod = 7; mod < 14; mod++) { //Skriver enbart ut värdet tex 6.48E-7 på displayen
lcd.write(value[mod]);
}
}