DS1307 órachippel beállítható kapcsolóóra

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

if (ido>1456 and ido <1459) ....
Avatar
Victor
DrótVégénSzéndarab
Hozzászólások: 17
Csatlakozott: 2012. április 16. hétfő, 6:00

Hozzászólás Szerző: Victor »

köszi így már működik :D
én ezzel a megoldással próbálkoztam, de persze nem volt jó

Kód: Egész kijelölése

 if ((hour*60+minute>5)||(hour*60+minute!>43))
tudom a puska szerint az "and" jelzése &&, de amint beírom az 1.01-es fordító egyből elkezd hibát jelezni, még csak le sem kell ellenőriztetni vele.

Most azt kell kitalálnom, hogy gombnyomásra hogyan rúgjam fel az egyenletet kívülről :D

Köszi még egyszer!

Üdv:Viktor
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Kód: Egész kijelölése

if (ido<7:40) {
   if (ido > 6:10) {
   rele behuz;
   }
}
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Kód: Egész kijelölése

// Ha Start és Stop között van:
if ((hour*60+minute > 1417) && (hour*60+minute < 1479)) {digitalWrite (relPin, HIGH);} 
  else 
  digitalWrite (relPin, LOW);
8)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

A || jel az a vagy-ot jelenti!
Avatar
Victor
DrótVégénSzéndarab
Hozzászólások: 17
Csatlakozott: 2012. április 16. hétfő, 6:00

Hozzászólás Szerző: Victor »

jelenleg ez a működő verzió

Kód: Egész kijelölése

if (hour*60+minute>530 and hour*60+minute<545) { digitalWrite relPin, HIGH);
 }
 else
 {
 digitalWrite (relPin, LOW);
 }
A szitu az most, hogy két ilyen időzítésre lesz szükségem, az egyik a világítást kapcsolja, a másik pedig a CO2-t (növényes akvarisztika szépségei, kell az extra CO2-a növények fotoszintéziséhez, nőnek tőle mint a gomba :-) )
Viszont lesz egy gomb is, amit ha megnyomok, akkor 2-3 percre megáll a szűrő, hogy ne hordja szét a kaját a vízben, majd ennek letelte után autómatikusan újraindul, kétállásúak a relék, így értelemszerűen itt az állandó zárt ágra lesz kötve a szűrő. Viszont amikor áll a szűrő, a CO2-t is le kellene kapcsolni. Van rá mód, hogy ezt valahogy be lehessen szúrni a fenti programrészbe.

Nyomógomb programrészem alapja így néz ki:

Kód: Egész kijelölése

const int buttonPin = 2;    
const int rel2Pin =  10;      
int buttonState = 0;       

void setup() {
  pinMode(rel2Pin, OUTPUT);      
  pinMode(buttonPin, INPUT);    
}

void loop(){
   buttonState = digitalRead(buttonPin);

   if (buttonState == HIGH) {     
    digitalWrite(rel2Pin, HIGH);  
  }
  else {
   digitalWrite(rel2Pin, LOW);
  }
}
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

if co2idovan and buttonstate=high ....
Avatar
Victor
DrótVégénSzéndarab
Hozzászólások: 17
Csatlakozott: 2012. április 16. hétfő, 6:00

Hozzászólás Szerző: Victor »

így csináltam meg, de sajnos így nem működik :( , a CO2 vezérlés kimenete be sem kapcsol, csak akkor 1 másodpercre, amikor a nyomógomb ideje lejár. Talán rosszul fogalmaztam, tehát az idővezérelt CO2 kimenetnek, ami be van kapcsolva, akkor le kellene kapcsolnia amíg a nyomógomb kimenete aktív

Kód: Egész kijelölése

 if (hour*60+minute>530 and hour*60+minute<1545)
 if (hour*60+minute>530 and buttonState==HIGH)
 {
 digitalWrite (relco2Pin, HIGH);
 }
 else
 {
 digitalWrite (relco2Pin, LOW);
 }
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

A gombkezelésed nem jó.
Tegyél be kapcsolót :P
Avatar
Victor
DrótVégénSzéndarab
Hozzászólások: 17
Csatlakozott: 2012. április 16. hétfő, 6:00

Hozzászólás Szerző: Victor »

Robert írta:A gombkezelésed nem jó.
Tegyél be kapcsolót :P
OK, és azt hogy , nagyon hálás vagyok, hogy segítesz, de nekem zéró programozási ismeretem van, az elektronika, és az automatizálás érdekel mert van pár dolog amit szívesen megcsinálnék a házban, de amúgy esztergályos a szakmám, persze CNC tanfolyammal kiegészítve, és valamikor elvégeztem egy 3 napos PLC tanfolyamot, ami másra nem volt jó, mint vasúti átkelőt programozni. Létraábrában ezt a problémát könnyen meg lehet oldani. Korábban egy Omron Zent már felprogramoztam akváriumvezérlésre, de azzal megcsinálni, jóval költségesebb mint arduinoval. Természetesen nem várom el , hogy helyettem megírd, én is folyamatosan túrom a netet hátha van valahol valami olyan program feltéve amiben találok segítséget, de valahogy ezzel az időkapcsolással senki nem foglakozott, amiket írsz azok meg sokszor csak felületes példák, amiket mint az előbb is azt sem tudom hová, és milyen formában szúrjak be.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Tipp:
1, gomb megnyom
2, prellmentesítés
3, számláló= számláló+1
4, gomb elengedést megvár
5, prellmentesít

if maradek(számláló/2)=1 then bekapcsol else kikapcsol

:P

A kapcsolot azert irtam, mert ott ezt az egesz hoblelebancot meguszod :).
Avatar
Victor
DrótVégénSzéndarab
Hozzászólások: 17
Csatlakozott: 2012. április 16. hétfő, 6:00

Hozzászólás Szerző: Victor »

Délután a CNC gépet pakolva a következőn agyaltam :-) , ha lehetne adni számértéket a nyomógombnak, akkor fel lehetne rúgni az időkapcsolós kimenet feltételét

Vagyis ha megoldható, hogy a
nyomógomb elengedve=60
megnyomva=0
akkor a nyomógomb kimenetét is meg lehetne írni feltételesre
if (buttonState = 60) { digitalWrite (relPin, HIGH)};


Az időkapcsoló, ami jelenleg ilyen
if (hour*60+minute>530 and hour*60+minute<545)

így módosulna
if (hour*buttonState+minute>530 and hour*60+minute<545)

vagyis ha megnyomom a gombot, akkor elméletileg 0-val szorzódna az óra, és ez biztos, hogy kisebb lenne mint a jelenleg beírt 530
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Bonyolítod :)
Lesz ez rosszabb is :P


if (orahatarok and gombstatus ) then....

Nem egyszerűbb?
Avatar
Victor
DrótVégénSzéndarab
Hozzászólások: 17
Csatlakozott: 2012. április 16. hétfő, 6:00

Hozzászólás Szerző: Victor »

Robert írta:
if (orahatarok and gombstatus ) then....

Nem egyszerűbb?
de igen, csak így nem működik

Kód: Egész kijelölése

 if (hour*60+minute>506 and hour*60+minute<545 and buttonState == LOW)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Szintaktikai javítás:

Kód: Egész kijelölése

 if ((hour*60+minute>506) and (hour*60+minute<545) and (buttonState == LOW)) 
Válasz küldése