|
|||||||
| DIY . Φτιάχτο μόνος σου Ο τίτλος τα λέει όλα. |
![]() |
|
|
Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
|
|
|
#1
|
||||
|
||||
|
Αν το θέλεις για όλες τις μέρες της εβδομάδας, λογικά δε χρειάζεται η if. Γενική αρχή στον προγραμματισμό, όταν έχουμε πολλές επιλογές, χρησιμοποιούμε ή συνάρτηση η οποία μας επιστρέφει μια τιμή ή στην χειρότερη την εντολή case (switch.....case για το arduino). Γενικά τα πολλά else if να τα αποφεύγεις.
Στάλθηκε από το F3111 μου χρησιμοποιώντας Tapatalk
__________________
"Let me tell you how you measure a man, when his world starts to fall see how tall he stand. It matters not how many times you fall down, what matters most is how many times you rise. Mistakes build character, and character takes you places money can't." |
|
#2
|
||||
|
||||
|
Για να καταλάβετε τι θέλω να κάνω, έχω ένα ρελέ που θέλω να το προγραμματίσω να οπλίζει συγκεκριμένες μέρες.
Τις μέρες λοιπόν που θα είναι προγραμματισμένο, θα πρέπει η οθόνη που περιλαμβάνει όλα τα schedules να μου κάνει με άσπρο χρώμα το atoheat. Έτσι όταν θα μπαίνω στην οθόνη των schedules, αν δω το atoheat με άσπρα γράμματα, σημαίνει ότι έχω προγραμματίσει να ανοίξει κάποια ημέρα. Δεν μπορώ να του δηλώσω να τα κάνει έτσι κι αλλιώς άσπρα, γιατί σε περίπτωση που δεν το έχω ενεργοποιήσει, θα πρέπει να παίρνει άλλο χρώμα. Να διορθώσω τον κώδικα του γαλατά: Κώδικας:
var αυγά=1 ;
if (αυγά ==1) // αληθές
{αυγά=10 ;
}
|
|
#3
|
||||
|
||||
|
θα συμφωνήσω .
στο iAqua.ino ο τύπος έχει 27 else if το ένα πίσω από το άλλο δεν ξέρω αν σου δημιουργεί πρόβλημα αλλά σίγουρα χάνεις τον λογαριασμό αν κάτι δεν πάει καλά . AgMa αν θες δώσε μας το void του schedAtoHeat μιας και δεν το βρίσκω στο iAqua μπας και βγαλουμε καμιά άκρη Παράθεση:
![]()
|
|
#4
|
||||
|
||||
|
Παράθεση:
Δεν θα το βρεις στο αρχικό iAqua γιατί είναι κάτι το οποίο έχω προσαρμόσει εγώ. Ήταν aux1 και το έχω κάνει Ato Heat, θερμοστάτης αναπλήρωσης δηλαδή. Απλά δεν θέλω να δουλεύει όλη τη βδομάδα μόνο και μόνο για να είναι ζεστό το νερό την Κυριακή που θα κάνω την αλλαγή και ο αρχικός κώδικας περιέχει μόνο ημερήσιο on off, κάθε μέρα να ανοίγει και να κλείνει συγκεκριμένη ώρα. Αυτό βολεύει μόνο στα φώτα και στο co2 αν υπάρχει ηλεκτρομαγνητική. Ο κώδικας πριν του προσθέσω την επιλογή για ξεχωριστές μέρες: Κώδικας:
if (schedAtoHeat.active==1) myGLCD.setColor(255, 255, 255);
else myGLCD.setColor(185, 185, 185);
myFiles.load(192, 239, 18, 18, schedActive[schedAtoHeat.active],2);
myGLCD.print(F("ATO HEAT"), 8, 244);
// convert on hour to char
itoa(schedAtoHeat.onHour, char3, 10);
if (schedAtoHeat.onHour>=0 && schedAtoHeat.onHour<=9) // add a zero if needed
{
itoa(0, char3t, 10); //make char3t 0
strcat(char3t, char3);
strcpy (char3,char3t);
}
myGLCD.print(char3, 87, 244);
myGLCD.print(":", 103, 244);
// convert on min to char
itoa(schedAtoHeat.onMinute, char3, 10);
if (schedAtoHeat.onMinute>=0 && schedAtoHeat.onMinute<=9) // add a zero if needed
{
itoa(0, char3t, 10); //make char3t 0
strcat(char3t, char3);
strcpy (char3,char3t);
}
myGLCD.print(char3, 111, 244);
// convert off hour to char
itoa(schedAtoHeat.offHour, char3, 10);
if (schedAtoHeat.offHour>=0 && schedAtoHeat.offHour<=9) // add a zero if needed
{
itoa(0, char3t, 10); //make char3t 0
strcat(char3t, char3);
strcpy (char3,char3t);
}
myGLCD.print(char3, 136, 244);
myGLCD.print(":", 152, 244);
// convert off min to char
itoa(schedAtoHeat.offMinute, char3, 10);
if (schedAtoHeat.offMinute>=0 && schedAtoHeat.offMinute<=9) // add a zero if needed
{
itoa(0, char3t, 10); //make char3t 0
strcat(char3t, char3);
strcpy (char3,char3t);
}
myGLCD.print(char3, 160, 244);
Κώδικας:
if (schedAtoHeat.Sunday==1) myGLCD.setColor(255, 255, 255);
else myGLCD.setColor(185, 185, 185);
myFiles.load(192, 239, 18, 18, schedActive[schedAtoHeat.active],2);
myGLCD.print(F("ATO HEAT"), 8, 244);
// convert on hour to char
itoa(schedAtoHeat.onHour, char3, 10);
if (schedAtoHeat.onHour>=0 && schedAtoHeat.onHour<=9) // add a zero if needed
{
itoa(0, char3t, 10); //make char3t 0
strcat(char3t, char3);
strcpy (char3,char3t);
}
myGLCD.print(char3, 87, 244);
myGLCD.print(":", 103, 244);
// convert on min to char
itoa(schedAtoHeat.onMinute, char3, 10);
if (schedAtoHeat.onMinute>=0 && schedAtoHeat.onMinute<=9) // add a zero if needed
{
itoa(0, char3t, 10); //make char3t 0
strcat(char3t, char3);
strcpy (char3,char3t);
}
myGLCD.print(char3, 111, 244);
Κώδικας:
// holds the schedule for power relays
struct PWRSCHED
{
byte active;
byte onHour;
byte onMinute;
byte offHour;
byte offMinute;
byte timer;
byte Sunday;
byte Monday;
byte Tuesday;
byte Wednesday;
byte Thursday;
byte Friday;
byte Saturday;
}
schedLights1,schedLights1s2,schedLights2,schedLights2s2,schedCirc,schedCo2,schedAtoHeat,schedAtoCirc;
|
|
#5
|
||||
|
||||
|
δοκίμασε αυτό ,αντί για κώμα ( ,) βάλε (||)
Κώδικας:
if (schedAtoHeat.Sunday==1 || schedAtoHeat.Monday==1 || sch edAtoHeat.Tuesday==1 || schedAtoHeat.Wednesday==1 || sch edAtoHeat.Thursday==1 || schedAtoHeat.Friday==1 || sched AtoHeat.Saturday==1) Κώδικας:
|| (logical or)
True if either operand is true, e.g.
if (schedAtoHeat.Sunday==1 || schedAtoHeat.Monday==1) {
// ...
}
is true if either Sunday or Monday is 1.
|
![]() |
| Tags |
| aquarium controller, arduino, iaqua |
| Συνδεδεμένοι χρήστες που διαβάζουν αυτό το θέμα: 1 (0 μέλη και 1 επισκέπτες) | |
|
|
Παρόμοια Θέματα
|
||||
| Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
| arduino απορια | gregkn73 | DIY . Φτιάχτο μόνος σου | 4 | 20-11-14 03:20 |
| arduino controller | ikaria_jim | DIY . Φτιάχτο μόνος σου | 5 | 09-02-14 16:21 |
| Arduino aquarium controller | chris the trik | DIY . Φτιάχτο μόνος σου | 33 | 06-04-10 20:23 |
| Προγραμματισμός σεμιναρίων | ΠΣΦΕ | Πανελλήνιος Σύλλογος Φίλων του Ενυδρείου | 33 | 03-12-07 09:58 |
| Σκέψεις - προγραμματισμός - απόψεις | KwstasV | DIY . Φτιάχτο μόνος σου | 10 | 12-02-07 14:58 |