• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Sprawdzenie kodu Arduino pro mini
#1
Witam wszystkich użytkowników. Czy mógłby ktoś doradzić odnośnie poniższego kodu?
Brak odczytu  napięcia .
  Przy wgraniu prostego programu działa prawidłowo

Kod:
#include <SoftwareSerial.h>
#include <OneWire.h>
#include <DS18B20.h>

#define wsteczny 6 //czuinik
#define chlodnica 7  //uruchamia wiatrak
#define  zamekZam 8 // zamyka  drzwi
#define  zamekOtw 9 //  otwiera drzwi
#define  swiatlozamek 10 // sygnalizacja otwiercia drzwi
#define  polozamek 11 // sygnalizacja otwiera drzwi

int Echo = 3;  // Arduino połoczony z pinem Echo czujnika
int Trig = 4;  // Arduino połoczony z pinem Trigger czujnika
#define brzecz  5 //zalacza
                   // zmienna przechowuj?ca odczytań? warto??

const byte ONEWIRE_PIN = 2; //czujnik temperatura pomiar


char c = "" ;
unsigned long aktCzas ,   czasDrzwi=0 ,czasTemp=0 ;
float  valSet, temperature;
int CM ,xx=0 ,  xxt=0  ,xxBA=0 , xxB=0 , xxBW=0, xxala=0 ;      //odlegsc w cm
long CZAS;     //d?ugosc powrotnego impulsu w uS
boolean wstecz = true;//true  false
byte a=0x00;

int  val = 0;


String readStringg="";
int n,  liczba = 200,   czasBrzecz  ;

byte sensorAddress[8] = {0x28, 0xFF, 0x72, 0x2, 0x21, 0x17, 0x4, 0x7D};
OneWire onewire(ONEWIRE_PIN);
DS18B20 sensors(&onewire);

void setup() {
 sensors.begin(9600);
 // BTserial.begin(9600);
 Serial. begin ( 9600 ) ;
 pinMode(chlodnica, OUTPUT);    
 pinMode(Trig, OUTPUT);   // wyj?cie    
 pinMode(zamekZam, OUTPUT);
 pinMode(zamekOtw, OUTPUT);
 pinMode(swiatlozamek, OUTPUT);//zamykanie awaryjne 3sek  otwieranie  1.5 sek
 pinMode(brzecz, OUTPUT);
  pinMode(polozamek, INPUT);  
 pinMode(Echo, INPUT);   //ustawienie pinu 3 w Arduino jako wejście
   pinMode(wsteczny, INPUT);
 

digitalWrite( zamekZam,0);
digitalWrite( zamekOtw,0);
digitalWrite( chlodnica,0);
digitalWrite( brzecz,0);
digitalWrite( swiatlozamek,0);

Serial.println("start");
//BTserial.println("Start");

}



void pomiar_odleglosci ()
{
  digitalWrite(Trig, HIGH);       //ustawienie stanu wysokiego na 10 uS - impuls inicjalizujacy - patrz dokumentacja
 delayMicroseconds(15);
 digitalWrite(Trig, LOW);
 CZAS = pulseIn(Echo, HIGH);
 CM = CZAS / 58; }



 

//==============================================
void loop() {
aktCzas = millis();
if((aktCzas-czasDrzwi)>100)
{                     //  co 1/10 sek powieksza liczby
 czasDrzwi=aktCzas;
 xx+=1;   xxt+=1 , xxBA+=1 , xxB+=1  , xxBW+=1 ,xxala+=1 ; }

 
 if((xxt>70)&&( wstecz )) {    // co 7 sek i gdy wsteczny wylaczony  sprawdza temperature i napiecie akomulatora
 xxt=0; delay(3);
//++++++++++++++++++++++++++++++++++++++++++++++++

  val = analogRead(A0);   // odczyt napięcia
   valSet =  val* 0,0044355 ;
   Serial.print("AkomVolt-" );
   Serial.println( valSet);

   

 
sensors.request(sensorAddress); //Inicjalizacja czujnikow

                while(!sensors.available()); //Oczekiwanie (zablokowanie programu) dla wynik?w pomiar?w
               
                  temperature = sensors.readTemperature(sensorAddress);// Reads the temperature from sensor
                 
              Serial.print("CzujTemper-");
                  Serial.println(temperature);                
                 if( temperature>85 ){digitalWrite(chlodnica,1);
                 }else  if( temperature<75 )digitalWrite(chlodnica,0);


   
  if(digitalRead(polozamek)) Serial.println("Drzwi Otwarte");  
    else   Serial.println("Drzwi Zamkniete");                  


}

if(Serial.available() > 0) {    //odczyt s blut

   readStringg =  Serial.readStringUntil('\n'); //Jeśli tak, to odczytaj je do znaku końca
   bitSet(a,7);  //wstawia bit  
  delay(1);  //zwolnienie }
if  ( bitRead(a,7) )
{ bitClear(a,7); //zeruie    
                    Serial.println("daneodebrane " + readStringg);
                     if ( readStringg =="wladek58oo" ) {         //otwiera drzwi
                     digitalWrite( zamekOtw,1);
                      Serial.println("zamekAktOtwiera");
                    digitalWrite( swiatlozamek,1);
                     xx=0;xxala=15;
                     }
     
                   
                     
              if ( readStringg =="wladek58zz" ) {        //zmyka drzwi
                     digitalWrite( zamekZam,1);
                      Serial.println("zamekAktZamyka");
                       digitalWrite( swiatlozamek,1);
                     xx=0;xxala=0;
                     }
           readStringg="";          
             }}
             
                    if(xx>10) {         // wyłacza sterownie drzwi                
                     digitalWrite( zamekZam,0);
                    digitalWrite( zamekOtw,0); xx=0;}

             if(xxala>30) { xxala=0;                 // wyłasza swiatło awaryine
                    digitalWrite( swiatlozamek,0);
                                     
             }        
           
if(digitalRead(wsteczny)){   wstecz =  false;  //  pomiar odległosci czinikiem
     if ( xxBW >=1)
     { pomiar_odleglosci(); xxBW=0;            //pomiar odleg?o?ci
       
      // Serial.println(" cm");
       czasBrzecz = map(CM, 0, 400, 2, 40);//konwersja
     }    
       //  if((aktCzas-czasZap)>czasBrzecz)   xxBA+=1 , xxB+=1;
        if (xxBA>czasBrzecz){
         xxBA=0;
         xxB=czasBrzecz;
          Serial.print(";Odle-");      //wyświetlanie wynik?w na ekranie w p?tli co 200 ms
        Serial.println( CM);
          //Serial.print (";BB.");
        // Serial.println(czasBrzecz);          
           digitalWrite(brzecz,1);            
         }
     if (xxB>(czasBrzecz+2)){   xxB=0;    xxBA=0;
          digitalWrite(brzecz,0);        
         }
         
       }
       else { wstecz = true;//true  false
       digitalWrite(brzecz,0);}
}
 
Odpowiedź
#2
Polecam kurs Arduino: https://forbot.pl/blog/kursy . Coś w ogóle w tym działa? Co robi sensors.begin(9600);? No i napięcie mierzy, tylko mnożysz x ZERO. Kropki i przecinki mają różne zastosowanie.
 
Odpowiedź
#3
(09-03-2019, 13:50)kaczakat napisał(a): Polecam kurs  Arduino: https://forbot.pl/blog/kursy . Coś w ogóle w tym działa? Co robi sensors.begin(9600);? No i napięcie mierzy, tylko mnożysz x ZERO. Kropki i przecinki mają różne zastosowanie.
Sensor begin  - do odczytu temperatury
Dzięki ten przecinek to był problem  
Działa i robi-
Pomiar temperatury , załącza wiatrak chłodnicy   ,Pomiar napięcia akomulatora  , otwiera drzwi przez   Bluetooth -hm10  , sygnalizacja otwarcie drzwi  , przy wstecznym załączą się czujnik odległości sygnalizacja brzęczkiem i odległości podaje
na komórkę.
sterowanie przez komórkę

Bluetooth -hm10  podłączony pod tx i rx  arduino pro mini
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości