09-03-2019, 11:22
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
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);}
}