Arduino schéma - arduino.sk

Pomoc s kodom...

Programovanie arduina
Príspevky: 3
Registrovaný: Ned 28. Apr 2013 9:33:27

Pomoc s kodom...

Poslaťod Markop » Ned 28. Apr 2013 9:39:55

Zdravim,potrebujem pomoc.Mam Arduino Uno s LM35 a LCD,vsetko mi pekne ide,len neviem ako naprogramovat dva Pin vystupy,tak aby jeden bol on pri klesajucej teplote,a druhy on pri stupajucej teplote.Teda neviem ako porovnavat aktualnu hodnotu sensora s tou predoslou...Dakujem za odpovede...

Obrázok užívateľa
Príspevky: 311
Registrovaný: Pon 19. Nov 2012 12:01:08
Bydlisko: HC/BA

Re: Pomoc s kodom...

Poslaťod tomXX » Pon 29. Apr 2013 9:16:49

Daj aspoň útržok kódu, takto sa nedá poradiť.
blog.sitepoint.sk - zaujímavé riešenia okolo Arduina

Príspevky: 3
Registrovaný: Ned 28. Apr 2013 9:33:27

Re: Pomoc s kodom...

Poslaťod Markop » Pon 29. Apr 2013 20:54:27

Kod je tu,jednoduchy kedze som zaciatocnik,uz mi to ide ale musel som to porovnavat s dalsimi premennymi....Ak viete nejaky jednoduhsi system budem vdacny....

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


const int analogInPin = A5;
const int ledInPin = A1;

int sensorValue = 0;
int ledPin = 0;
int klesa = 0;
int stupa = 0;


void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(13,OUTPUT);
pinMode(10,OUTPUT);
pinMode(9,OUTPUT);
}

void loop() {
stupa=(sensorValue+1);
klesa=(sensorValue-1);

sensorValue = analogRead(A5);

float tlacidlo = analogRead(A1);




float temperature = 0.0;
int sample;
float ten_samples = 0.0;

// take 10 samples from the MCP9700
for (sample = 0; sample < 10; sample++) {

temperature = ((float)analogRead(A5) * 15.1 / 1024.0) - 0.5;
temperature = temperature / 0.01;
// sample every 0.1 seconds

// Pri kratkej prestavke je velmi skakava regulacia on-off
ten_samples = ten_samples + temperature;
}

temperature = ten_samples / 10.0;

delay(1000);

Serial.print("sensor = " );
Serial.print(sensorValue);
Serial.print("\t stupa = ");
Serial.println(stupa);
Serial.print("\t klesa = ");
Serial.println(klesa);
Serial.print("tlacidlo = ");
Serial.println(tlacidlo);


if(temperature>20){
lcd.setCursor(0,0);
lcd.print("Teplota - ");
lcd.print(temperature);
lcd.setCursor(0,1);
lcd.print("Regulacia Vyp. ");
digitalWrite(7,HIGH);
digitalWrite(8,LOW);}


if(temperature<20){
lcd.setCursor(0,0);
lcd.print("Teplota - ");
lcd.print(temperature);
lcd.setCursor(0,1);
lcd.print("Regulacia Zap. ");
digitalWrite(8,HIGH);
digitalWrite(7,LOW);}

if(temperature>40){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Chybny senzor ");
lcd.setCursor(0,1);
lcd.print("!SKONTROLUJ! ");}

if(temperature<-40){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Chybny senzor ");
lcd.setCursor(0,1);
lcd.print("!SKONTROLUJ! ");}

if(sensorValue>klesa){digitalWrite(13,HIGH);
digitalWrite(10,LOW);}



if(sensorValue<stupa){digitalWrite(13,LOW);
digitalWrite(10,HIGH);}

if(tlacidlo>800){digitalWrite(9,HIGH);}
if(tlacidlo<500){digitalWrite(9,LOW);}
}

Obrázok užívateľa
Príspevky: 311
Registrovaný: Pon 19. Nov 2012 12:01:08
Bydlisko: HC/BA

Re: Pomoc s kodom...

Poslaťod tomXX » Uto 30. Apr 2013 14:46:08

Nechápem dobre čo to chce robiť... Ak chceš zachytiť trend teploty (či stúpa alebo klesá), treba definovať nejaký časový interval. Čiže treba použiť nejaký časovač, a v určitom čase uložiť aktuálnu teplotu do premennej, a po prejdení určeného intervalu porovnať - potom uvidíš či klesá alebo stúpa. Rámcovo:

Kód: Vybrať všetko
unsigned long time, last_time;
boolean stupa, klesa = FALSE;

void setup(){
   last_time = millis();
}

void loop(){
   if (last_time + 10000 > millis()){
      last_time = millis();
      if (temp_last < temp) {
         stupa = TRUE;
         klesa = FALSE;
      } else {
         stupa = FALSE;
         klesa = TRUE;
      }
      temp_last = temp;
   }
   temp = *** zmeraj aktualnu teplotu
}
blog.sitepoint.sk - zaujímavé riešenia okolo Arduina

Späť na Software