Hjälp med Arduino!

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
EonX
Inlägg: 48
Blev medlem: 11 januari 2010, 23:36:56

Hjälp med Arduino!

Inlägg av EonX »

God dag!
Vet inte riktigt hur jag skall beskriva mitt problem i ämnesraden med gör att försök här!

Jag har gjort en kod där en tempsensor styr ett relä. Där jag kan ställa reläets aktiveringstemperatur med en pot. detta visas sen på en OLED. funkar bra.

Det jag skulle vilja ha hjälp med är hur jag på ett enkelt sätt kan visa på OLED om relät är aktiverat eller ej. Kan jag återkopplat om en outpuppin är HIGH eller LOW och visa det som "AV" eller "PÅ" i displayen?

I koden skulle jag alltså vilja ha in detta på rad 91 "STATUS" jag skulle vija ha in detta.

Ytterst tacksam för hjälp.

Kod: Markera allt

#include <OneWire.h>
#include <DallasTemperature.h>
#include <SPI.h><br>#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4 
Adafruit_SSD1306 display(OLED_RESET);
// Data wire is conntec to the Arduino digital pin 4
#define ONE_WIRE_BUS 4
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature sensor 
DallasTemperature sensors(&oneWire);




const int relaypin =  8;      // relä
int potpin = 0; 
int val;    





void setup(void)
{

Serial.begin(9600);     // initialize the Serial Monitor at a baud rate of 9600
// Start up the library
sensors.begin();        // initialize the DS18B20 temperature sensor:



  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();




   pinMode(relaypin, OUTPUT);






   
}
void loop(void){ 
// Call sensors.requestTemperatures() to issue a global temperature and Requests to all devices on the bus
sensors.requestTemperatures(); 
Serial.print("Celsius temperature: ");  
// Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
Serial.println(sensors.getTempCByIndex(0));     // get and print the temperature in degree Celsius

Serial.print("Vald temp: ");  
// Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
Serial.println(val);     // get and print the temperature in degree Celsius
















 display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(70,0);
  display.println(sensors.getTempCByIndex(0));  
  
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(70,10);
  display.println(val);

  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(70,20);
  display.println(LÄGE);  

  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.println("TEMP"); 
  
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0,10);
  display.println("VALD TEMP:");  

  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0,20);
  display.println("STATUS:");  
  display.display();



 val = analogRead(potpin);          
 val = map(val, 0, 1000, 0, 100);    





if (sensors.getTempCByIndex(0) >= val+1)digitalWrite(relaypin,LOW);
if (sensors.getTempCByIndex(0) <= val-1)digitalWrite(relaypin,HIGH);

     




return val;

delay(10);

}
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
hummel
Inlägg: 2268
Blev medlem: 28 november 2009, 10:40:52
Ort: Stockholm

Re: Hjälp med Arduino!

Inlägg av hummel »

Du har en villkorssats i slutet som väljer relästatus, använd det för att skriva på displayen vilken status ditt relä har.
SeniorLemuren
Inlägg: 7812
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: Hjälp med Arduino!

Inlägg av SeniorLemuren »

Du har ju if-satser som kollar om reläet är av heller på, där kan du ju lägga till vad mer som skall ske. tex spela Marseljäsen om reläet är på :)

Kod: Markera allt

if (sensors.getTempCByIndex(0) >= val+1)digitalWrite(relaypin,LOW);
if (sensors.getTempCByIndex(0) <= val-1)digitalWrite(relaypin,HIGH);
Du får klämma in ett par småparenteser bara

Kod: Markera allt

if (sensors.getTempCByIndex(0) >= val+1){
   digitalWrite(relaypin,LOW);
   // här kan du ju skriva att reläet är av;
   // här kan du göra något annat;
.
.
.
}
if (sensors.getTempCByIndex(0) <= val-1){
   digitalWrite(relaypin,HIGH);
   // här kan du ju skriva att reläet är på;
   // här kan du göra något annat;
.
.
.
}
Hummel han före medan jag skrev.
EonX
Inlägg: 48
Blev medlem: 11 januari 2010, 23:36:56

Re: Hjälp med Arduino!

Inlägg av EonX »

Tackar å det ödmjukaste :)

Ber om ursäkt för min okunskap här nu men då ramla jag över nästa problem, jag gjorde om koden enl nedan och får då bara 424 när relät är aktivt och 421 när det är inaktivt.

Vad är det jag inte fattar?

Kod: Markera allt

const int relaypin =  8;      // relä
int potpin = 0; 
int val;  
int stat;  

Kod: Markera allt

if (sensors.getTempCByIndex(0) >= val+1){ 
    digitalWrite(relaypin,LOW);
    stat = ("AV");
}
if (sensors.getTempCByIndex(0) <= val-1){
    digitalWrite(relaypin,HIGH);
    stat = ("AKTIV");
}

     



return stat;
return val;

delay(10);
hummel
Inlägg: 2268
Blev medlem: 28 november 2009, 10:40:52
Ort: Stockholm

Re: Hjälp med Arduino!

Inlägg av hummel »

Stat är deklarerad int, kan enbart innehålla heltal. Deklarera som sträng eller liknande. Eller använd stat som en flagga och avgör vad du vill skriva ut.
Användarvisningsbild
PeterH
Inlägg: 8614
Blev medlem: 15 mars 2006, 15:57:10
Ort: Gävle/Valbo

Re: Hjälp med Arduino!

Inlägg av PeterH »

Och du, vad gäller rubriken så kan ju exempelvis "Hjälp med Arduino! Visa status för temp styrt relä" vara en lämplig rubrik... (editera ditt första inlägg för att fixa rubriken :wink: )
Skriv svar