switch case help
16 berichten
• Pagina 2 van 2 • 1, 2
Re: switch case help
oke hier gaan we:
of het nu leesbaarder is ...
ik heb geprobeerd eea compacter te maken
maar met mijn beperkte kennis heb ik alle accolades nodig
de format functie heb ik niet gevonden
nico
- Code: Alles selecteren
//This Arduino sketch reads DS18B20 "1-Wire" digital
// temperature sensors.
// Tutorial:
// http://www.hacktronics.com/Tutorials/arduino-1-wire-tutorial.html
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
int ledm =7; // led is at pin 7 (to be relay pump)
int ledr =6; // to be relay heater
int SettempX = 23;// begin temp 25C variable for settemp
int Periode = 00;
int Maischtijd1 = 120000;//60000=1 min
int Maischtijd2 = 90000;
int Maischtijd3 = 90000;
int kPinButton1 = A2;//startbutton analoog2
long Starttijd;
// 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 to Arduino pin 13
// LCD pins d4, d5, d6, d7 to Arduino pins 5, 4, 3, 2
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
int backLight = 13; // pin 13 will control the backlight
// Data wire is plugged into pin 8 on the Arduino
#define ONE_WIRE_BUS 8
// 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 maischpan = {
0x28, 0xD2, 0x9F, 0x63, 0x03, 0x00, 0x00, 0x90 };
DeviceAddress retourleiding = {
0x28, 0x1B, 0xAB, 0x63, 0x03, 0x00, 0x00, 0x02 };
void setup(void)
{
// Start up the library
sensors.begin();
// set the resolution to 10 bit (good enough?)
sensors.setResolution(maischpan, 10);
sensors.setResolution(retourleiding, 10);
pinMode (ledm, OUTPUT);
pinMode (ledr, OUTPUT);
pinMode(backLight, OUTPUT);
digitalWrite(backLight, HIGH); // turn backlight on. Replace 'HIGH' with 'LOW' to turn it off.
lcd.begin(16,2); // columns, rows. use 16,2 for a 16x2 LCD, etc.
lcd.clear(); // start with a blank screen
unsigned long Starttijd;
Starttijd = millis();
pinMode(kPinButton1, INPUT);
digitalWrite(kPinButton1, HIGH); //high is std vallue port
Serial.begin (9600);
}
void printTemperature(DeviceAddress deviceAddress)
{
float Settemp= SettempX;
float tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00) {
lcd.print("Error");
}
else {
lcd.print(tempC);
}
{
float tempC = sensors.getTempC(maischpan);
if (tempC > Settemp)
{
digitalWrite (ledm, HIGH);
}
else
{
digitalWrite (ledm, LOW);
}
}
{
float tempC = sensors.getTempC(retourleiding);
if (tempC > Settemp + 5) //HLT to be 5C hotter than Maisch
{
digitalWrite (ledr, HIGH);
}
else
{
digitalWrite (ledr, LOW);
}
}
}
// timer part
int buttonState = 0;
// read the state of the pushbutton value:
void loop (void)
{
buttonState = digitalRead(kPinButton1);
// check if the pushbutton is pressed. if it is, the buttonState is LOW:
if (buttonState == LOW){
Starttijd = millis();
}
Periode=1;
//timer1
{
if (millis()> (Starttijd + Maischtijd1)){
Periode=2;
}
//timer2
{
if (millis()> (Starttijd + Maischtijd2 + Maischtijd1)){
Periode=3;
}
//timer 3
{
if (millis()> (Starttijd + Maischtijd2 + Maischtijd1 + Maischtijd3)){
Periode=4;
}
//periode 4 alles is klaar
// todo eindtijd stop alles
}
delay(5000);
sensors.requestTemperatures();
lcd.setCursor(0,0);
lcd.print("maisch: ");
printTemperature(maischpan);
Serial.println("Periode:");
Serial.println (Periode);
//printTemperature(maischpan);
lcd.setCursor(0,1);
lcd.print("retour: ");
printTemperature(retourleiding);
Serial.println("settempX:");
Serial.println (SettempX);
Serial.println("buttonState:");
Serial.println(buttonState);
Serial.println("Starttijd:");
Serial.println(Starttijd);
}
}
switch (Periode) {
case 1:
Periode=1;
(SettempX = 23);
break;
// break is optional
case 2:
Periode=2;
// (SettempX = 24);
break;
case 3:
Periode=3;
(SettempX = 25);
break;
case 4:
Periode=4;
(SettempX= 100);
digitalWrite (ledm, LOW);
digitalWrite (ledr, LOW);
break;
}
}
of het nu leesbaarder is ...
ik heb geprobeerd eea compacter te maken
maar met mijn beperkte kennis heb ik alle accolades nodig
de format functie heb ik niet gevonden
nico
Advertisement
Re: switch case help
helaas, niemand reageerde op mijn vorige vraag.
ik heb intussen gevonden waar het fout gaat maar weet niet hoe het op te lossen
aan het begin declareer ik Maischtijd1, Maischtijd2 etc en geef ze een waarde 12000
daar waar in de vergelijking millis() >(starttijd+maischtijd1) gaat het mis in plaats dat er bij de starttijd 12000 opgeteld wordt is de waarde van starttijd+12000 negatief( -11072) wat moet ik doen om er gewoon de waarde van Maischtijd1 erbij op te tellen...
Nico
ik heb intussen gevonden waar het fout gaat maar weet niet hoe het op te lossen
aan het begin declareer ik Maischtijd1, Maischtijd2 etc en geef ze een waarde 12000
daar waar in de vergelijking millis() >(starttijd+maischtijd1) gaat het mis in plaats dat er bij de starttijd 12000 opgeteld wordt is de waarde van starttijd+12000 negatief( -11072) wat moet ik doen om er gewoon de waarde van Maischtijd1 erbij op te tellen...
Nico
Re: switch case help
Alles delen door pakweg 1000 ?
Kris
Kris
Als je het probleem gedetailleerd genoeg omschrijft, heb je meestal al de oplossing.
Re: switch case help
ik ben eruit!
ik heb int gebruikt voor de Maischtijden
deze zijn te lang ik heb ze nu als "long" gedeclareerd en nu werkt het!
al doende leert men
nico
ik heb int gebruikt voor de Maischtijden
deze zijn te lang ik heb ze nu als "long" gedeclareerd en nu werkt het!
al doende leert men
nico
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: switch case help
Klopt, over het hoofd gezien . Ik werk standaard altijd met unsigned long voor dingen als millis(), microseconds etc.
16 berichten
• Pagina 2 van 2 • 1, 2
Wie is er online?
Gebruikers in dit forum: Majestic-12 [Bot] en 77 gasten