Εμφάνιση ενός μόνο μηνύματος
  #284  
Παλιά 20-05-17, 09:29
Το avatar του χρήστη AgMa
AgMa Ο χρήστης AgMa δεν είναι συνδεδεμένος
Senior Member
 
Εγγραφή: 10-11-2014
Περιοχή: Κρήτη, Ηράκλειο
Μηνύματα: 423
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από mpampis varytimos Εμφάνιση μηνυμάτων
θα συμφωνήσω .
στο iAqua.ino ο τύπος έχει 27 else if το ένα πίσω από το άλλο
δεν ξέρω αν σου δημιουργεί πρόβλημα αλλά σίγουρα χάνεις τον λογαριασμό αν κάτι δεν πάει καλά .

AgMa
αν θες δώσε μας το void του schedAtoHeat μιας και δεν το βρίσκω στο iAqua μπας και βγαλουμε καμιά άκρη


Εννοώ να το κάνω να περιέχει όλες τις μέρες της εβδομάδας και να ενεργοποιείται ανάλογα με το ποιά θα έχω επιλέξει, όχι να ενεργοποιείται κάθε μέρα.
Δεν θα το βρεις στο αρχικό 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;
Δεν ξέρω αν βοηθάει κάπου, τα checkboxes για τις μέρες, τα έχω κάνει αντιγραφή απ' τον κώδικα της λίπανσης. Απλά εκεί δεν ενεργοποιείται ρελέ (μετράει με millis και η αντλία δουλεύει με mosfet) και δεν υπάρχει στον πίνακα των schedules η λίπανση.
Απάντηση με παράθεση
 
Page generated in 0,01548 seconds with 11 queries