نمایش نتایج: از 1 به 10 از 49
Like Tree8 لایک

موضوع: کمک در باره پروزه به یک مبتدی

Hybrid View

  1. #1
    Senior Member
    تاریخ عضویت
    Oct 2016
    نوشته ها
    112
    این کل چیزی که نوشتم دیبایسینگ هم توش استفاده کردم ولی خوب خیلی کند هستش .
    کد:
      #include <EEPROM.h>
      #include <Bounce2.h>
      #include <Wire.h> 
      #include <LiquidCrystal_I2C.h>
      #include "RTClib.h"    
      #include <SoftwareSerial.h>;
      #include "JDateLib.h"
      #include <SHT1x.h>
     
      #define setBUTTON 13
      #define upBUTTON 11
      #define downBUTTON 12   
      #define dataPin  8
      #define clockPin 9  
    
      Bounce set;
      Bounce up;
      Bounce down;
      
      LiquidCrystal_I2C lcd(0x3F,16,2);
      SoftwareSerial Bolo(2,3); 
      RTC_DS1307 RTC;
      SHT1x sht1x(dataPin, clockPin);
      
      unsigned long prevMillis = 0;
      unsigned long currentmillis = millis();
      static byte prevsetButton;
      static byte  prevSetMode;
      byte setMode;
      int tempmax = 20;
      int tempmin = 20;
      int Humiditymin = 20;
      int Humiditymax = 20;
      int state;
      String jdate;            
      int JY,JM,JD;           
      const int rala1  = 4;
      const int rala2  = 5;  
      const int rala3  = 6; 
      const int rala4  = 7;  
      byte termometru[8] ={B00100,B01010,B01010,B01110,B01110,B11111,B11111,B01110};
      byte picatura[8] = {B00100,B00100,B01010,B01010,B10001,B10001,B10001,B01110,};
      byte m[8] = {B00000,B00000,B10001,B01010,B00100,B10001,B01010,B00100,};
      byte x[8] = {B00000,B00000,B00100,B01010,B10001,B00100,B01010,B10001,};
      byte l[8] = {B00001,B00011,B00111,B01111,B01111,B00111,B00011,B00001,};
      byte k[8] = {B10000,B11000,B11100,B11110,B11110,B11100,B11000,B10000,}; 
    
    void setup(){
      lcd.begin(16,2);
      lcd.clear();
      lcd.init();                     
      lcd.backlight();
      lcd.createChar(1,termometru);
      lcd.createChar(2,picatura);
      lcd.createChar(3,x);
      lcd.createChar(4,m);
      lcd.createChar(5,l);
      lcd.createChar(6,k);
      Serial.begin(9600);
      Bolo.begin(9600);
      Wire.begin();
    
      pinMode(rala1, OUTPUT);
      pinMode(rala2, OUTPUT);
      pinMode(rala3, OUTPUT);
      pinMode(rala4, OUTPUT);
      pinMode(setBUTTON,INPUT_PULLUP);
      pinMode(upBUTTON,INPUT_PULLUP);
      pinMode(downBUTTON,INPUT_PULLUP);
    
        set.attach (setBUTTON);
        set.interval(30);
        up.attach (upBUTTON);
        up.interval(30);
        down.attach (downBUTTON);
        down.interval(30);;
    
      
      digitalWrite(rala1, HIGH);
      digitalWrite(rala2, HIGH);
      digitalWrite(rala3, HIGH);
      digitalWrite(rala4, HIGH); 
    
      tempmax = EEPROM.read(0);
      tempmin = EEPROM.read(1); 
      Humiditymin = EEPROM.read(2);
      Humiditymax = EEPROM.read(3); 
      
      
      }
    
    void loop(){
    
      set.update();
      up.update();
      down.update();
    if ( setMode != 0) {
        if (currentmillis - prevMillis >= 10000UL) {
          setMode = 0;
          prevMillis = currentmillis;
        }}
    prevsetButton = setBUTTON;  
    
      if (setMode >= 5) {
        setMode = 0;
      }
      if (setMode != prevSetMode) {
        lcd.clear();
        prevSetMode = setMode;
      }
        
     if (set.fell()) {  setMode++;  } 
       
       DateTime now=RTC.now();
       show_time_and_date(now);    }
       void show_time_and_date(DateTime datetime){
       
       float h = sht1x.readHumidity();
       float t = sht1x.readTemperatureC();  
    
      switch (setMode) {
          case 0://normal
      lcd.setCursor(0,0);
      if(datetime.hour()<10)lcd.print("0");
      lcd.print(datetime.hour(),DEC);
      lcd.print(":");
      if(datetime.minute()<10)lcd.print("0");
      lcd.print(datetime.minute(),DEC);
      lcd.setCursor(8, 0);
     Date now(datetime.year(),datetime. month(), datetime.day());
      JY = now.JYear();
      JM = now.JMonth();
      JD = now.JDay();
      lcd.print((JY)-1300);
      lcd.print("/");
      if(JD<10)lcd.print("0");
      lcd.print(JD,DEC);
      lcd.print("/"); 
      if(JM<10)lcd.print("0");
      lcd.print(JM,DEC); 
      lcd.setCursor(1, 1);
      lcd.write(1);
      lcd.setCursor(3, 1);
      lcd.print(t,1);
      lcd.setCursor(5, 1);
      lcd.print((char)223); 
      lcd.print("C");
      lcd.setCursor(9, 1);
      lcd.write(2);
      lcd.setCursor(11, 1);
      lcd.print(h, 1);
      lcd.println("%");
       prevMillis = currentmillis;
          break;  }
    switch (setMode) {
          case 1:
       if (up.fell())    {  tempmin++;  }
       if (down.fell())  {  tempmin--;  }
      lcd.print("    Set temp:"); 
      lcd.setCursor(1, 1);
      lcd.write(4);
      lcd.setCursor(2, 1);
      lcd.print(tempmin);
      lcd.setCursor(4, 1);
      lcd.write(5);
      lcd.setCursor(12, 1);
      lcd.write(3);
      lcd.setCursor(13, 1);
      lcd.print(tempmax);                 
      EEPROM.write(1, tempmin);
          break;  }
    switch (setMode) {
          case 2:
      if (up.fell())    {  tempmax++;  }
      if (down.fell())  {  tempmax--;  }
      lcd.print("    Set temp:"); 
      lcd.setCursor(1, 1);
      lcd.write(4);
      lcd.setCursor(2, 1);
      lcd.print(tempmin);
      lcd.setCursor(11, 1);
      lcd.write(6);
      lcd.setCursor(12, 1);
      lcd.write(3);
      lcd.setCursor(13, 1);
      lcd.print(tempmax);                 
      EEPROM.write(0, tempmax); 
      break;     }                   
    
    switch (setMode) {
          case 3:
      if (up.fell())    {  Humiditymin++;  }
      if (down.fell())  {  Humiditymin--;  }
      lcd.print("  Set Humidity:"); 
      lcd.setCursor(1, 1);
      lcd.write(4);
      lcd.setCursor(2, 1);
      lcd.print(Humiditymin);
      lcd.setCursor(4, 1);
      lcd.write(5);
      lcd.setCursor(12, 1);
      lcd.write(3);
      lcd.setCursor(13, 1);
      lcd.print(Humiditymax);               
      EEPROM.write(2, Humiditymin);   
      break;    }         
    
    switch (setMode) {
          case 4:
      if (up.fell())    {  Humiditymin++;  }
      if (down.fell())  {  Humiditymin--;  }
      if (digitalRead(upBUTTON) == LOW)   {  Humiditymax++;  }
      if (digitalRead(downBUTTON) == LOW) {  Humiditymax--;  }
      lcd.print("  Set Humidity:"); 
      lcd.setCursor(1, 1);
      lcd.write(4);
      lcd.setCursor(2, 1);
      lcd.print(Humiditymin);
      lcd.setCursor(11, 1);
      lcd.write(6);
      lcd.setCursor(12, 1);
      lcd.write(3);
      lcd.setCursor(13, 1);
      lcd.print(Humiditymax);                
      EEPROM.write(3, Humiditymax);   
      break;      }      
      
    if(Bolo.available())  {state = Bolo.read();}
    if (state == '1') {
         digitalWrite(rala1, LOW);
         digitalWrite(rala2, LOW);         }
    else if (state == '0') {
         digitalWrite(rala1, HIGH);
         digitalWrite(rala2, HIGH);        }
    else if (state == 'A') {digitalWrite(rala1,LOW); }
    else if (state == 'a') {digitalWrite(rala1,HIGH);}  
    else if (state == 'B') {digitalWrite(rala2,LOW); }
    else if (state == 'b') {digitalWrite(rala2,HIGH);}    
        
    if( t <= tempmin )              {digitalWrite(rala4,LOW);  Bolo.print("       T on");  }
    else if( t >= tempmax )         {digitalWrite(rala4,HIGH); Bolo.print("       T off"); } 
    if( h <= Humiditymin )          {digitalWrite(rala3,LOW);  Bolo.print("          H on");  }
    else if( h >= Humiditymax )     {digitalWrite(rala3,HIGH); Bolo.print("          H off"); }
      
    
      Bolo.print(t,1);
      Bolo.print("C");
      Bolo.print("      ");
      Bolo.print(h,1 );
      Bolo.println("%");
      Bolo.print("         tmin : ");
      Bolo.print(tempmin );
      Bolo.print("         tmax : ");
      Bolo.print(tempmax );
      Bolo.print("         Hmin : ");
      Bolo.print(Humiditymin );
      Bolo.print("         Hmax : ");
      Bolo.print(Humiditymax );
       }
    [/QUOTE]

  2. #2
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط mohammadali نمایش پست ها
    این کل چیزی که نوشتم دیبایسینگ هم توش استفاده کردم ولی خوب خیلی کند هستش .
    کد:
      #include <EEPROM.h>
      #include <Bounce2.h>
      #include <Wire.h> 
      #include <LiquidCrystal_I2C.h>
      #include "RTClib.h"    
      #include <SoftwareSerial.h>;
      #include "JDateLib.h"
      #include <SHT1x.h>
     
      #define setBUTTON 13
      #define upBUTTON 11
      #define downBUTTON 12   
      #define dataPin  8
      #define clockPin 9  
    
      Bounce set;
      Bounce up;
      Bounce down;
      
      LiquidCrystal_I2C lcd(0x3F,16,2);
      SoftwareSerial Bolo(2,3); 
      RTC_DS1307 RTC;
      SHT1x sht1x(dataPin, clockPin);
      
      unsigned long prevMillis = 0;
      unsigned long currentmillis = millis();
      static byte prevsetButton;
      static byte  prevSetMode;
      byte setMode;
      int tempmax = 20;
      int tempmin = 20;
      int Humiditymin = 20;
      int Humiditymax = 20;
      int state;
      String jdate;            
      int JY,JM,JD;           
      const int rala1  = 4;
      const int rala2  = 5;  
      const int rala3  = 6; 
      const int rala4  = 7;  
      byte termometru[8] ={B00100,B01010,B01010,B01110,B01110,B11111,B11111,B01110};
      byte picatura[8] = {B00100,B00100,B01010,B01010,B10001,B10001,B10001,B01110,};
      byte m[8] = {B00000,B00000,B10001,B01010,B00100,B10001,B01010,B00100,};
      byte x[8] = {B00000,B00000,B00100,B01010,B10001,B00100,B01010,B10001,};
      byte l[8] = {B00001,B00011,B00111,B01111,B01111,B00111,B00011,B00001,};
      byte k[8] = {B10000,B11000,B11100,B11110,B11110,B11100,B11000,B10000,}; 
    
    void setup(){
      lcd.begin(16,2);
      lcd.clear();
      lcd.init();                     
      lcd.backlight();
      lcd.createChar(1,termometru);
      lcd.createChar(2,picatura);
      lcd.createChar(3,x);
      lcd.createChar(4,m);
      lcd.createChar(5,l);
      lcd.createChar(6,k);
      Serial.begin(9600);
      Bolo.begin(9600);
      Wire.begin();
    
      pinMode(rala1, OUTPUT);
      pinMode(rala2, OUTPUT);
      pinMode(rala3, OUTPUT);
      pinMode(rala4, OUTPUT);
      pinMode(setBUTTON,INPUT_PULLUP);
      pinMode(upBUTTON,INPUT_PULLUP);
      pinMode(downBUTTON,INPUT_PULLUP);
    
        set.attach (setBUTTON);
        set.interval(30);
        up.attach (upBUTTON);
        up.interval(30);
        down.attach (downBUTTON);
        down.interval(30);;
    
      
      digitalWrite(rala1, HIGH);
      digitalWrite(rala2, HIGH);
      digitalWrite(rala3, HIGH);
      digitalWrite(rala4, HIGH); 
    
      tempmax = EEPROM.read(0);
      tempmin = EEPROM.read(1); 
      Humiditymin = EEPROM.read(2);
      Humiditymax = EEPROM.read(3); 
      
      
      }
    
    void loop(){
    
      set.update();
      up.update();
      down.update();
    if ( setMode != 0) {
        if (currentmillis - prevMillis >= 10000UL) {
          setMode = 0;
          prevMillis = currentmillis;
        }}
    prevsetButton = setBUTTON;  
    
      if (setMode >= 5) {
        setMode = 0;
      }
      if (setMode != prevSetMode) {
        lcd.clear();
        prevSetMode = setMode;
      }
        
     if (set.fell()) {  setMode++;  } 
       
       DateTime now=RTC.now();
       show_time_and_date(now);    }
       void show_time_and_date(DateTime datetime){
       
       float h = sht1x.readHumidity();
       float t = sht1x.readTemperatureC();  
    
      switch (setMode) {
          case 0://normal
      lcd.setCursor(0,0);
      if(datetime.hour()<10)lcd.print("0");
      lcd.print(datetime.hour(),DEC);
      lcd.print(":");
      if(datetime.minute()<10)lcd.print("0");
      lcd.print(datetime.minute(),DEC);
      lcd.setCursor(8, 0);
     Date now(datetime.year(),datetime. month(), datetime.day());
      JY = now.JYear();
      JM = now.JMonth();
      JD = now.JDay();
      lcd.print((JY)-1300);
      lcd.print("/");
      if(JD<10)lcd.print("0");
      lcd.print(JD,DEC);
      lcd.print("/"); 
      if(JM<10)lcd.print("0");
      lcd.print(JM,DEC); 
      lcd.setCursor(1, 1);
      lcd.write(1);
      lcd.setCursor(3, 1);
      lcd.print(t,1);
      lcd.setCursor(5, 1);
      lcd.print((char)223); 
      lcd.print("C");
      lcd.setCursor(9, 1);
      lcd.write(2);
      lcd.setCursor(11, 1);
      lcd.print(h, 1);
      lcd.println("%");
       prevMillis = currentmillis;
          break;  }
    switch (setMode) {
          case 1:
       if (up.fell())    {  tempmin++;  }
       if (down.fell())  {  tempmin--;  }
      lcd.print("    Set temp:"); 
      lcd.setCursor(1, 1);
      lcd.write(4);
      lcd.setCursor(2, 1);
      lcd.print(tempmin);
      lcd.setCursor(4, 1);
      lcd.write(5);
      lcd.setCursor(12, 1);
      lcd.write(3);
      lcd.setCursor(13, 1);
      lcd.print(tempmax);                 
      EEPROM.write(1, tempmin);
          break;  }
    switch (setMode) {
          case 2:
      if (up.fell())    {  tempmax++;  }
      if (down.fell())  {  tempmax--;  }
      lcd.print("    Set temp:"); 
      lcd.setCursor(1, 1);
      lcd.write(4);
      lcd.setCursor(2, 1);
      lcd.print(tempmin);
      lcd.setCursor(11, 1);
      lcd.write(6);
      lcd.setCursor(12, 1);
      lcd.write(3);
      lcd.setCursor(13, 1);
      lcd.print(tempmax);                 
      EEPROM.write(0, tempmax); 
      break;     }                   
    
    switch (setMode) {
          case 3:
      if (up.fell())    {  Humiditymin++;  }
      if (down.fell())  {  Humiditymin--;  }
      lcd.print("  Set Humidity:"); 
      lcd.setCursor(1, 1);
      lcd.write(4);
      lcd.setCursor(2, 1);
      lcd.print(Humiditymin);
      lcd.setCursor(4, 1);
      lcd.write(5);
      lcd.setCursor(12, 1);
      lcd.write(3);
      lcd.setCursor(13, 1);
      lcd.print(Humiditymax);               
      EEPROM.write(2, Humiditymin);   
      break;    }         
    
    switch (setMode) {
          case 4:
      if (up.fell())    {  Humiditymin++;  }
      if (down.fell())  {  Humiditymin--;  }
      if (digitalRead(upBUTTON) == LOW)   {  Humiditymax++;  }
      if (digitalRead(downBUTTON) == LOW) {  Humiditymax--;  }
      lcd.print("  Set Humidity:"); 
      lcd.setCursor(1, 1);
      lcd.write(4);
      lcd.setCursor(2, 1);
      lcd.print(Humiditymin);
      lcd.setCursor(11, 1);
      lcd.write(6);
      lcd.setCursor(12, 1);
      lcd.write(3);
      lcd.setCursor(13, 1);
      lcd.print(Humiditymax);                
      EEPROM.write(3, Humiditymax);   
      break;      }      
      
    if(Bolo.available())  {state = Bolo.read();}
    if (state == '1') {
         digitalWrite(rala1, LOW);
         digitalWrite(rala2, LOW);         }
    else if (state == '0') {
         digitalWrite(rala1, HIGH);
         digitalWrite(rala2, HIGH);        }
    else if (state == 'A') {digitalWrite(rala1,LOW); }
    else if (state == 'a') {digitalWrite(rala1,HIGH);}  
    else if (state == 'B') {digitalWrite(rala2,LOW); }
    else if (state == 'b') {digitalWrite(rala2,HIGH);}    
        
    if( t <= tempmin )              {digitalWrite(rala4,LOW);  Bolo.print("       T on");  }
    else if( t >= tempmax )         {digitalWrite(rala4,HIGH); Bolo.print("       T off"); } 
    if( h <= Humiditymin )          {digitalWrite(rala3,LOW);  Bolo.print("          H on");  }
    else if( h >= Humiditymax )     {digitalWrite(rala3,HIGH); Bolo.print("          H off"); }
      
    
      Bolo.print(t,1);
      Bolo.print("C");
      Bolo.print("      ");
      Bolo.print(h,1 );
      Bolo.println("%");
      Bolo.print("         tmin : ");
      Bolo.print(tempmin );
      Bolo.print("         tmax : ");
      Bolo.print(tempmax );
      Bolo.print("         Hmin : ");
      Bolo.print(Humiditymin );
      Bolo.print("         Hmax : ");
      Bolo.print(Humiditymax );
       }
    [/QUOTE]
    کدی که من زدمو برات فرستادم رو ببین
    بدون استفاده از دیبانس
    فقط پینهای سوئیچم رو inputpullup کردم و استفاده کردم .
    سرعتش واکنش سوئیچ هاش مناسبه
    میتونه با delay (200) ای که گذاشتم بازی کنی و سرعت مطلوبت رو تنظیم کنی

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO