Nie jesteś zalogowany na forum.
http://er-mik.prv.pl/_4um_avt/avt5571_1 … attiny.zip
Mam jedno zgłoszenie o problemach przy współpracy z jedną z bibliotek do Ardiuno. Co prawda autor programu popełnił kilka błędów ale nie miały one bezpośredniego wpływu na działanie programu. Biblioteka zaraz po komendzie konwersji odczytuje temperaturę. Można tak robic o ile nie jest ustawiony tryb zasilania pasożytniczego, wtedy konwersja będzie przerwana. Log SaleAE. Nie analizowałem tematu zbyt dokładnie. Problem jest jednostkowy a było to kilka godzin przed moim wyjazdem na kilka dni. Widziałem tylko, że biblioteka używa komendy MatchRom, czyli wcześniej musiało byc wywołane SearchRom.
Poniżej program:
//////////uruchomienia klawiatury na MCP////////////////////
#include <Wire.h>
///////////////////////////////////// timery
#include <Timers.h>
////////////uruchomienie czujnika temperatury//////////////
#define sensorPin 4 ///dallas na Pin 4
#include <OneWire.h>
#include <DallasTemperature.h>
OneWire oneWire(sensorPin);
DallasTemperature sensor(&oneWire);
/////uruchomienie zegara z eeprom//////////////////////////
#include <Time.h>
#include <DS1307RTC.h>
#include <EEPROM.h>
tmElements_t tm;
int currentDayOfWeek;
long unsigned currentTimeSec;
////////////uruchomienie LCD//////////////////////////////
#include <LiquidCrystal_I2C.h>
#define BACKLIGHT_PIN 3
LiquidCrystal_I2C lcd(0x3D, 2, 1, 0, 4, 5, 6, 7);
////////////definicja czujnika deszczu ///////////////////
#define RainSwitch 3
///////////////////bluetooth//////////////////////////////
#include <SoftwareSerial.h>
SoftwareSerial bluetooth(A2, A1);
//////////////////////////////////////////////////////////
void setup() {
Serial.begin(9600);
bluetooth.begin(9600);
//////////////// Zdefiniowanie LCD ////////////////////////
lcd.begin(16,2);
lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);
lcd.setBacklight(HIGH);
///////////////////////////////////////////////////////////
}
void loop() {
//////////////////////////////////////////////////////
////////////////tu si? zaczyna g?ówny program
////warunki zachowania w przyp zmiany temp
if (getTemp()>0)
{ if(getTemp()<=9)
{
lcd.setCursor (11,1);lcd.print(" ");lcd.print(getTemp(),0);lcd.print((char)223);lcd.print("C ");
}
if(getTemp()>9)
{
lcd.setCursor (11,1);lcd.print(" ");lcd.print(getTemp(),0);lcd.print((char)223);lcd.print("C");
}
}
if (getTemp()<0)
{
lcd.setCursor (0,1);
lcd.print("OFF");
if(getTemp()>-10)
{
lcd.setCursor (11,1);lcd.print(" ");lcd.print(getTemp(),0);lcd.print((char)223);lcd.print("C");
}
if(getTemp()<-10)
{
lcd.setCursor (11,1);lcd.print(getTemp(),0);lcd.print((char)223);lcd.print("C");
}
}
}
///////////Pomiar temperatury ///////
float getTemp()
{
sensor.requestTemperatures();
float temp = sensor.getTempCByIndex(0);
return temp;
}
Proszę zwrócić uwagę, na bezsensowne ciągłe wywołania "getTemp()" i na brak oczekiwania na pomiar po "sensor.requestTemperatures()".
Jeśli sa inne problemy z emulatorem proszę pisać.
Offline