loop "loopt niet"?

Arduino specifieke Software
Berichten: 14
Geregistreerd: 09 Mrt 2013, 00:00

loop "loopt niet"?

Berichtdoor bauer1 » 19 Jan 2014, 23:58

goedenavond ,

ben weer lekker bezig maar stuit op een probleem

ik lees de waarden van ds18b20 uit en in de loop bevriest deze als ik naar de seriele monitor schrijf veranderen de waarden MT en HLT maar precies de waarde celcius in de loop bevriest
bvd

Nico

iemand een idee?
Code: Alles selecteren
#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// Variables for Step
long tempo;
float t1;
int pumpstatus;
int t2;
int t3;
int step_number = 1;
int t_step1;
int t_step2;
int t_step3;
char step_off = 'x';
char check;
char add_min;
//char step_on;
long t_over;
long t_actual;
long t_real;
long t_step;
int start = 0;
char final_step;
int inizio = 1;
int song;
int stato;
float celsius;

//lcd
// Connections:
// rs (LCD pin 4) to Arduino pin 12
// rw (LCD pin 5) to Arduino pin 11
// enable (LCD pin 6) to Arduino pin 10
// LCD pin 15 backlight lcd direct on 5v
// LCD pins d4, d5, d6, d7 to Arduino pins 5, 4, 3, 2
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
// end lcd
// end variables part


// melody part:
// tones for melody
#define NOTE_A3  220
#define NOTE_B3  247
#define NOTE_C3  131
#define NOTE_G3  196
#define NOTE_A4  440
#define NOTE_C4  262
// notes in the melody:
int melody[] = { NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4, NOTE_C4, NOTE_G3,NOTE_G3, NOTE_A3,
NOTE_G3,0, NOTE_B3, NOTE_C4, NOTE_C4, NOTE_G3,NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4 };
// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {4, 8, 8, 4,4,4,4,4, 4, 8, 8, 4,4,4,4,4, 4, 8, 8, 4,4,4,4,4};
// end melody part

// ===================set up sensor part
#define ONE_WIRE_BUS 7 // ds18b20 on pin7
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
DeviceAddress MT = { 0x28, 0xD2, 0x9F, 0x63, 0x03, 0x00, 0x00, 0x90 }; //mt =mashtun
DeviceAddress HLT = { 0x28, 0x1B, 0xAB, 0x63, 0x03, 0x00, 0x00, 0x02 };//HLT hot liq. tun



void setup(void)
{
// Start up the library
sensors.begin();
// set the resolution to 10 bit
sensors.setResolution(MT, 10);
sensors.setResolution(HLT, 10);
// end setup sensor part
// initialize the digital pin's as an output.
pinMode(8, OUTPUT); // Relay 1 pump
//pinMode(9, OUTPUT); // Relay 2 heater
Serial.begin(9600);
digitalWrite(8, LOW); // set the Relay 1 off
//digitalWrite(9, LOW); // set the Relay 2 off
}
 
//start temp read
void printTemperature(DeviceAddress deviceAddress)
{
float tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00) {
Serial.println("Error");
} else {
Serial.println(tempC);
}
{
float tempC = sensors.getTempC(MT);
}
{
//float tempC = sensors.getTempC(HLT);
//if (tempC > Settemp + 10) //HLT to be 10C hotter than Maisch
//{digitalWrite (9, HIGH);}
//else
//{digitalWrite (9, LOW);}
}

// note visual basic reads celsius as value for controling relay1

}

void loop(void)
{
// read celsius value for VB
celsius = (sensors.getTempC(MT));
//Serial.println (sensors.getTempC(MT)); // for serial monitor check only
//Serial.println (sensors.getTempC(HLT)); // for serial monitor check only
Serial.println (celsius);

//LCD output
 lcd.begin(16,2); // columns, rows. use 16,2 for a 16x2 LCD, etc.
 lcd.clear(); // start with a blank screen
 lcd.setCursor(0,0);
 lcd.print("Maisch = ");
 lcd.print(celsius);
 lcd.print(" C ");
 
 
 // read status of relay1 : pump
 pumpstatus = digitalRead(8);
  if (pumpstatus == HIGH) {
  lcd.setCursor(0,1);
  lcd.print("pomp aan");  //pump running   
   }
   else {
 lcd.setCursor(0,1);
  lcd.print("pomp uit"); //pump off
  delay (5000);
   }
   
// original part by italian max odillo interaction VB <> Arduino works fine no changes made
// Accensione tramite pulsante ON in Visual Basic (resta spento finchè diverso da y)
if (step_off !='y') {
  step_off = Serial.read();
  stato = 1;
   }

// Spegnimento di emergenza tramite pulsante OFF in Visual Basic (Controllo se la serial read = x e assegno x a step_off)   
if (step_off =='y') { // Deve essere possibile spegnere solo dopo che il mash è iniziato (e il mash inizia quando step_off = y)
  if (stato == 1) { // Evito di inviare il comando di accensione se il relè è già acceso
  digitalWrite(8, HIGH); // set the Relay 1 on
 
  //if (stato == 1) {
          tone(6, NOTE_G3, 250);
          delay(250);
          tone(6, NOTE_A4, 250); // Eseguo suono ad ogni fine step         
          delay(250);
          tone(6, NOTE_G3, 250); // Eseguo suono ad ogni fine step
          delay(250);
          tone(6, NOTE_A4, 250); // Eseguo suono ad ogni fine step
          stato = 2; // Cambio lo stato da 1 a 2 RELAY ACCESO
  }
  check = Serial.read(); // Una volta iniziato il mash inizio a leggere la seriale e solo se ricevo il valore x assegno step_off = x così da fermare il mash
  if (check =='x') {
  digitalWrite(8, LOW); // set the Relay 1 off
  step_off = Serial.read();
 
// Resetto le variabili che controllano se lo step è finito   
 
   }
   }   
 }


 

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: loop "loopt niet"?

Berichtdoor nicoverduin » 20 Jan 2014, 09:47

bauer1 schreef:
ik lees de waarden van ds18b20 uit en in de loop bevriest deze als ik naar de seriele monitor schrijf veranderen de waarden MT en HLT maar precies de waarde celcius in de loop bevriest

Nou weet ik dat punten een schaars goed zijn maar bedoel je dit?


Ik lees de waarden van de ds18b20 uit.
De loop bevriest als ik naar de seriële monitor schrijf.
De waarden MT en HLT veranderen.
Maar celcius veranderd niet.

Als dit het geval is, hoe weet je dat:
- de oneWire werkt?
- de LCD goed werkt?
- als je het Serial.println(celcius) eruit haalt veranderd het LCD display dan wel?


Verder maak je het jezelf een stuk eenvoudiger door alle overbodige haakjes en accolades eruit te slopen, alles wat je niet gebruikt in commentaar zetten of als je het niet gaat gebruiken helemaal verwijderen. Routines die niet aangeroepen worden uit te commentariëren, nu moet je zoeken in een chaos en rommelige code. Ik kan het niet vaak genoeg zeggen:
- Werk ordelijk en netjes. Als je verwacht can een ander dat hij/zij door jouw code moet spitten maak het uitnodigend. Als je er zelf al niet meer uitkomt hoe kan je dan verwachten dat een ander door die code er wel uitkomt?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 14
Geregistreerd: 09 Mrt 2013, 00:00

Re: loop "loopt niet"?

Berichtdoor bauer1 » 20 Jan 2014, 10:17

ik ben eruit
ik heb in de loop vergeten de "sensor request"in te voegen vandaar dat er geen nieuwe waarden verschijnen.

bedankt voor de input

nico

Berichten: 5
Geregistreerd: 25 Okt 2013, 10:00

Re: loop "loopt niet"?

Berichtdoor Marc » 30 Jan 2014, 13:38

Sorry voor deze min of meer offtopic vraag, maar ik ben geïnteresseerd in de tone() functie die in de software wordt aangeroepen.
Weet iemand waar ik gedetailleerdere informatie over deze functie kan vinden?

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: loop "loopt niet"?

Berichtdoor nicoverduin » 30 Jan 2014, 19:01

Marc schreef:Sorry voor deze min of meer offtopic vraag, maar ik ben geïnteresseerd in de tone() functie die in de software wordt aangeroepen.
Weet iemand waar ik gedetailleerdere informatie over deze functie kan vinden?
Google? http://arduino.cc/en/Reference/tone
En anders moet je in de source kijken.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 5
Geregistreerd: 25 Okt 2013, 10:00

Re: loop "loopt niet"?

Berichtdoor Marc » 31 Jan 2014, 16:31

Bedankt voor de informatie, Nico.
Ik had eerlijk gezegd niet verwacht dat tone() een onderdeel was van de standaard C library.
Ik dacht aan een aanvullende library, maar vond geen bewijs ervan in de geposte sourcecode.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: loop "loopt niet"?

Berichtdoor nicoverduin » 31 Jan 2014, 17:05

source staat in <ArduinoFolder>/hardware/arduino/avr/cores/arduino (als je 1.5.4 gebruikt)
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 113 gasten