Teade

Collapse

Foorumi reeglid.

Foorumi reeglistik on uuendatud. Palume tutvuda ja arvesse võtta.
See more
See less

Keegi Arduino'ga ka tegeleb?

Collapse
X
 
  • Filter
  • Kellaaeg
  • Show
Clear All
new posts

    #46
    Vs: Keegi Arduino'ga ka tegeleb?

    Nüüd ma ei saanud midagi aru.Relee töötab mingi aja.Näiteks minuti,et mootor jõuaks luugi lahti lükata.Mootori lõpulüliti lülitab mootori välja.Äkki siis panna magnet ja herkon kuskile mis katkestab luugi avanedes arduinost tuleva voolu sellele releele? See oleks ka plaan aga kas kuidagi tarkvaraliselt seda ellu viia ei saaks?Kosmoseajastu ikkagi.
    viimati muutis kasutaja insippo; 07 m 2011, 16:47.

    Comment


      #47
      Vs: Keegi Arduino'ga ka tegeleb?

      Mis tingimus peab olema täidetud, et mootor tööle hakkaks?

      If (tingimus1 on täidetud && ülemine_lõpulüliti_ei ole_aktiveeritud)
      { lülita mootor sisse}
      If ( ülemine_lõpulüliti_aktiivne)
      {lülita mootor välja}

      Tegelikult on vaja H silda ja kahte väljundit arduinost. Kui üks väljund on kõrge käib mootor ühte pidi ja kui teine väljund on kõrge siis käib mootor teist pidi. Kui mõlemad on kõrged või madalad mootor seisab.

      Comment


        #48
        Vs: Keegi Arduino'ga ka tegeleb?

        Mul hetkel nii :
        {

        if (tempC > 28) //temp mille juures luuk avaneb

        digitalWrite(tempHigh, HIGH); // avab luugi kui temp on kõrge
        delay(60000) // paus 1 min,et niikaua avab mootor luuki.Mootori töö peaks lõpetama lõpulüliti või miski andur
        digitalWrite(tempHigh, LOW);

        if (tempC < 25)


        digitalWrite(tempLow, HIGH);
        delay(60000)
        digitalWrite(tempLow, LOW)
        }

        }
        osa koodist aga ta tuleb uuesti sinna ja tahab jälle avada või sulgeda luuki.2 releed on.Üks paneb mootori ühtpidi käima ja teine teistpidi.

        Comment


          #49
          Vs: Keegi Arduino'ga ka tegeleb?

          Alustuseks:

          if (tempC < 25)

          peale statementi peab tulema alati { } kus sees on kood mis teostatakse kui if vastab tõele.

          Comment


            #50
            Vs: Keegi Arduino'ga ka tegeleb?

            selline on hetkel töötav kood


            #include <OneWire.h>

            #include <DallasTemperature.h>






            // Data wire is plugged into pin 3 on the Arduino
            #define ONE_WIRE_BUS 3

            // 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);

            // Assign the addresses of your 1-Wire temp sensors.
            // See the tutorial on how to obtain these addresses:
            // http://www.hacktronics.com/Tutorials...ss-finder.html

            DeviceAddress insideThermometer = { 0x28, 0x2B, 0xE6, 0xDA, 0x02, 0x00, 0x00, 0x43 };
            //DeviceAddress outsideThermometer = { 0x28, 0x6B, 0xDF, 0xDF, 0x02, 0x00, 0x00, 0xC0 };
            //DeviceAddress dogHouseThermometer = { 0x28, 0x59, 0xBE, 0xDF, 0x02, 0x00, 0x00, 0x9F };

            #define moisture_input 0 // analog pin 0
            #define divider_top 9 // takisti digital pin 9
            #define divider_bottom 10 // nael 1 digital pin 10
            int waterPump =7; // led, water pump digital pin 7
            int moisture;
            int Koguprotsent;
            int tempHigh =6; // relee mis avab luugi
            int tempLow =5; //relee mis suleb luugi



            void setup(void)
            {

            //seda osa tegin juurde vähe
            pinMode (tempLow, OUTPUT);
            pinMode (tempHigh, OUTPUT);
            pinMode (waterPump, OUTPUT);
            digitalWrite(waterPump, LOW);
            digitalWrite (tempLow, LOW);
            digitalWrite (tempHigh, LOW);
            // siiani
            // start serial port
            Serial.begin(9600);
            // Start up the library
            sensors.begin();
            // set the resolution to 10 bit (good enough?)
            sensors.setResolution(insideThermometer, 10);
            // sensors.setResolution(outsideThermometer, 10);
            // sensors.setResolution(dogHouseThermometer, 10);
            }

            void printTemperature(DeviceAddress deviceAddress)
            {
            float tempC = sensors.getTempC(deviceAddress);
            if (tempC == -127.00) {
            Serial.print("Error getting temperature");
            } else {
            //Serial.print("C: ");
            Serial.print(tempC);
            Serial.print(" C");
            //-- panin koodi siia..
            if (tempC >= 28){ //temp mille juures luuk avaneb

            digitalWrite(tempHigh, HIGH); // avab luugi kui temp on kõrge
            delay(6000); // paus 1 min,et niikaua avab mootor luuki.Mootori töö peaks lõpetama lõpulüliti või miski andur
            digitalWrite(tempHigh, LOW);
            }
            if (tempC <= 25){


            digitalWrite(tempLow, HIGH);
            delay(6000);
            digitalWrite(tempLow, LOW);
            }


            // Serial.print(" F: ");
            // Serial.print(DallasTemperature::toFahrenheit(tempC ));
            }
            }

            void loop(void)
            {
            //---- soil

            // Serial.print("Getting Soil Moisture...\n\r");
            moisture=SoilMoisture(); // soilmoister as variable
            Koguprotsent = ((moisture*100)/900); // mina sain max väärtuseks 950
            Serial.print("Niiskuse absoluut arv: ");
            Serial.println(moisture);

            Serial.print("Muld on niiske ");
            Serial.print(Koguprotsent);
            Serial.print(" % ");

            Serial.println();


            delay(1000); // tuleks sättida endale sobivaks.



            if (Koguprotsent >= 90){

            digitalWrite(waterPump, LOW);

            }
            if (Koguprotsent <= 75){

            digitalWrite(waterPump, HIGH);
            delay(10000); //pumba töö aeg.Katsetamise käigus selgub palju oleks normaalne aeg pumba tööks,et ei tekiks uputust.
            digitalWrite(waterPump, LOW);


            }

            //---------- temp
            delay(1000);
            Serial.print("Getting temperatures...\n\r");
            sensors.requestTemperatures();

            Serial.print("Inside temperature is: ");
            printTemperature(insideThermometer);
            Serial.print("\n\r");
            // Serial.print("Outside temperature is: ");
            // printTemperature(outsideThermometer);
            // Serial.print("\n\r");
            // Serial.print("Dog House temperature is: ");
            // printTemperature(dogHouseThermometer);
            // Serial.print("\n\r\n\r");
            }




            int SoilMoisture(){
            int reading;
            // set driver pins to outputs
            pinMode(divider_top,OUTPUT);
            pinMode(divider_bottom,OUTPUT);

            // drive a current through the divider in one direction
            digitalWrite(divider_top,LOW);
            digitalWrite(divider_bottom,HIGH);

            // wait a moment for capacitance effects to settle
            delay(1000);

            // take a reading
            reading=analogRead(moisture_input);

            // reverse the current
            digitalWrite(divider_top,HIGH);
            digitalWrite(divider_bottom,LOW);

            // give as much time in 'reverse' as in 'forward'
            delay(1000);

            // stop the current
            digitalWrite(divider_bottom,LOW);

            return reading;

            //relays for temp
            pinMode(tempHigh,OUTPUT);





            }






            Comment


              #51
              Vs: Keegi Arduino'ga ka tegeleb?

              Mis ta avab luugi (minut aega) ja siis hakkab kohe uuesti edasi avama? Oleks lõpulüsitid seal if statementis sees siis ta seda ei teeks. if (temp... && lõpulüliti_üleval)
              Ala et kui juba luuk on üleval, siis enam ülesse suunal mootor liikuma ei saa hakata.

              Comment


                #52
                Vs: Keegi Arduino'ga ka tegeleb?

                Sellel sati panni keeramise aktuaatoril on lõpulülitid sees,et üle ei keeraks.Relee peab niikaua aga olema toite all.Kuidas seda kirjutada sisse koodi,et relee enam tööle ei hakkaks kui luuk on ühes või teises asendis ?

                Comment


                  #53
                  Vs: Keegi Arduino'ga ka tegeleb?

                  Teadmata kuidas asi sul täpselt riistvaraliselt on lahendatud ei oska küll öelda, kuna ei saa aru (miks relee näit voolu all peab olema).
                  -e-
                  Kui sa ei saa mingil põhjusel reaalajas luugi asendit kontrollida (lülitite seisu), siis või kirj ka nii:


                  If (temp > 25 && X ==0){
                  liiguta luuk ülesse
                  X = 1
                  }

                  If (temp <25 && X ==1 {
                  luuk alla
                  X = 0
                  }

                  Ehk kui luuk on viidud ülesse, siis X ei ole enam 0 ning teist luugi ülesse liigutamise tsüklit ei saa teha, enne peab asja alla liigutama.
                  viimati muutis kasutaja qwerty; 07 m 2011, 20:37.

                  Comment


                    #54
                    Vs: Keegi Arduino'ga ka tegeleb?

                    riistvaraliselt on nii,et pin 6 ja 5 otsas on läbi transi releed.Kui nüüd temp tõuseb kasvuhoones üle 28 kraadi siis ta lülitab relee sisse mis on pin 6 küljes. Hoiab seda minuti voolu all ja siis programm läheb edasi ning hakkab otsast peale tööle kuni jõuab jälle tulemuseni,et temp on üle 28 kraadi ja klõpsab pin 6 releed minutiks.Temperatuuriga mis on alla 25 kraadi hakkab sama jant pihta.Hetkel on nii.Prototüüp ka alles laual.

                    Comment


                      #55
                      Vs: Keegi Arduino'ga ka tegeleb?

                      Lõpulülitid on ju mehaanilised ning nende väärtuse saad läbi sisendi arduinosse.
                      Input nivoo läbi softi kõrgeks ja läbi lüliti lased sellele pinnile GND peale. Sellest kas GND jõuab pini või mitte ütleb mis asendis luuk parasjagu on.

                      Comment


                        #56
                        Vs: Keegi Arduino'ga ka tegeleb?

                        Aga siis 2 sisendit.Ühte jõuab gnd on kinni ja teise jõuab gnd siis lahti.Kui luuk on lahti siis peaks ära plokkima kõrgema temperatuuri peale reageerimise ja,et hakkab ainult ootama millal temp langeb teise relee lülitamiseks. Kuidas see ainult peaks välja nägema programmis ?

                        qwerty : nüüd sain lõpuks aru mida sa mõtlesid
                        viimati muutis kasutaja insippo; 07 m 2011, 21:50.

                        Comment


                          #57
                          Vs: Keegi Arduino'ga ka tegeleb?

                          qwerty : http://pastebin.com/tM4Fv8mp

                          kasvuhoone_luukidega_7.cpp: In function 'void printTemperature(uint8_t*)':
                          kasvuhoone_luukidega_7:86: error: 'X' was not declared in this scope
                          kasvuhoone_luukidega_7:86: error: 'If' was not declared in this scope
                          kasvuhoone_luukidega_7:86: error: expected `;' before '{' token
                          kasvuhoone_luukidega_7.cpp: At global scope:
                          kasvuhoone_luukidega_7:105: error: expected declaration before '}' token

                          mingid sellised veateated

                          Comment


                            #58
                            Vs: Keegi Arduino'ga ka tegeleb?

                            saatsin talle juba parandused

                            Aga jah H-bridge oleks ettem aga preagusel hetkel seda ei pea olema.

                            Comment


                              #59
                              Vs: Keegi Arduino'ga ka tegeleb?

                              Esmalt postitatud insippo poolt Vaata postitust
                              qwerty : http://pastebin.com/tM4Fv8mp

                              kasvuhoone_luukidega_7.cpp: In function 'void printTemperature(uint8_t*)':
                              kasvuhoone_luukidega_7:86: error: 'X' was not declared in this scope
                              kasvuhoone_luukidega_7:86: error: 'If' was not declared in this scope
                              kasvuhoone_luukidega_7:86: error: expected `;' before '{' token
                              kasvuhoone_luukidega_7.cpp: At global scope:
                              kasvuhoone_luukidega_7:105: error: expected declaration before '}' token

                              mingid sellised veateated
                              See mis ma kirjutasin, ei olnud kood copy paste jaoks. Pole päris korrektne C keel mida otse praegusesse koodi kopeerida, lisaks peaks X eelnevalt koodis dekl jne. Tahtsin lihtsalt ideeliselt näidata kuidas oleks võimalik asja lahendada.

                              Comment


                                #60
                                Vs: Keegi Arduino'ga ka tegeleb?

                                qwerty : tänud sulle vihje eest.Sain asjaga hakkama ja kasvuhoone kood töötab.Kastab ja avab luuke.Nüüd tuleb asi ellu rakendada ja kasvuhoone ka taastada.
                                Tahaks veel külge nikerdada eth kilbi millel on sd kaart ja teha väikese veebi serveri logimaks niiskust ja temperatuuri ning toimuvat.
                                viimati muutis kasutaja insippo; 09 m 2011, 06:59.

                                Comment

                                Working...
                                X