SukkoPera:
E scommetto che quando decrementi da 12 va lo stesso ad 11 e poi a 10, ma poi a 90.
Devi stampare uno spazio dopo il numero, in poche parole.
questo è il codice completo
#include "dht11.h"
#include "RTClib.h"
#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
RTC_DS1307 RTC;
dht11 DHT;
#define DHT11_PIN 4
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE);
Servo servouscita;
Servo servoentrata;
int conta;
int pulsanteuscita = 7; //button pin, connect to ground to move servo
int pulsanteentrata = 6;
int pressioneP1 = 0;
int pressioneP2 = 0;
int led_accessoconsentito = 22;
int led_accessonegato = 24;
int striscialed = 30;
int luminosita;
int pinFotoresistenza = A0;
int lampione1 = 34;
int lampione2 = 35;
int lampione3 = 36;
int lampione4 = 37;
int irrigatore1 = 38;
int irrigatore2 = 39;
int irrigatore3 = 40;
int irrigatore4 = 41;
int irrigatore5 = 42;
int irrigatore6 = 43;
byte orainizioirrigazione = 20;
byte minutiinizioirrigazione = 23;
byte orafineirrigazione = 20;
byte minutifineirrigazione = 24;
byte confermainizio = 0;
byte acceso = 0;
byte confermafine = 0;
void setup()
{ lcd.begin(16, 2);
lcd.setBacklight(HIGH);
conta = 10 ;
pinMode(pulsanteuscita, INPUT);
pinMode(pulsanteentrata, INPUT);
servouscita.attach(9);
servoentrata.attach(10);
servouscita.write(90);
servoentrata.write(90);
digitalWrite(pulsanteuscita, HIGH);
digitalWrite(pulsanteentrata, HIGH);
pinMode(28, OUTPUT);
pinMode(led_accessoconsentito, OUTPUT);
pinMode(led_accessonegato, OUTPUT);
pinMode(pinFotoresistenza, INPUT);
pinMode(striscialed, OUTPUT);
pinMode(lampione1, OUTPUT);
pinMode(lampione2, OUTPUT);
pinMode(lampione3, OUTPUT);
pinMode(lampione4, OUTPUT);
pinMode(irrigatore1, OUTPUT);
pinMode(irrigatore2, OUTPUT);
pinMode(irrigatore3, OUTPUT);
pinMode(irrigatore4, OUTPUT);
pinMode(irrigatore5, OUTPUT);
pinMode(irrigatore6, OUTPUT);
Serial.begin(9600);
delay(2000);
Serial.println(F("Type,\tstatus,\tHumidity (%),\tTemperature (C)"));
Wire.begin();
RTC.begin();
if (! RTC.isrunning())
{
Serial.println(F("L'rtc non è attivo"));
}
Wire.beginTransmission(0x68);
Wire.write((byte)0x00);
Wire.write((byte)0x55);
Wire.write((byte)0x22); //2° byte MINUTI da 0x00 a 0x59
Wire.write((byte)0x80 | 0x20); //3° byte ORE da 0x00 a 0x24
Wire.write((byte)0x02); //4° byte GIORNO della settimana da 0x01 a 0x07
Wire.write((byte)0x07); //5° byte GIORNO del mese da 0x00 a 0x31
Wire.write((byte)0x06); //6° byte MESE da 0x00 a 0x12
Wire.write((byte)0x16); //7° byte ANNO 0x00 a 0x99
Wire.endTransmission();
}
void loop()
{
{
int chk;
Serial.print(F("DHT11, \t"));
chk = DHT.read(DHT11_PIN); // READ DATA
switch (chk){
case DHTLIB_OK:
Serial.print("OK,\t");
break;
}
// DISPLAT DATA
Serial.print(DHT.humidity,1);
Serial.print(F(",\t"));
Serial.println(DHT.temperature,1);
lcd.setCursor(12, 1);
lcd.println(DHT.temperature);
lcd.setCursor(14, 1);
lcd.print("'C");
}
{
pressioneP1 = digitalRead(pulsanteuscita);
if (pressioneP1 == LOW)
{
servouscita.write(-90);
delay(3000);
conta= conta + 1;
servouscita.write(90);
}
pressioneP2 = digitalRead(pulsanteentrata);
if (pressioneP2 == LOW)
{
servoentrata.write(-90);
delay(3000);
servoentrata.write(90);
conta= conta - 1 ;
}
lcd.setCursor (0 ,0);
lcd.print("N. posti:");
lcd.setCursor(10, 0);
lcd.print(conta );
}
{
luminosita = analogRead(pinFotoresistenza);
if(luminosita <300)
{
Serial.print("Accendo led");
Serial.println(luminosita);
digitalWrite(striscialed,HIGH);
digitalWrite(lampione1,HIGH);
digitalWrite(lampione2,HIGH);
digitalWrite(lampione3,HIGH);
digitalWrite(lampione4,HIGH);
}
else
{
digitalWrite(striscialed,LOW);
digitalWrite(lampione1,LOW);
digitalWrite(lampione2,LOW);
digitalWrite(lampione3,LOW);
digitalWrite(lampione4,LOW);
}
Serial.print("Valore luminosita");
Serial.println(luminosita);
}
{
//inizzializza la trasmissione partendo
//dall'indirizzo 0x00
Wire.beginTransmission(0x68);
Wire.write((byte)0x00);
Wire.endTransmission();
//richiedo 7 byte dal dispositivo con
//indirizzo 0x68
Wire.requestFrom(0x68, 7);
//regupero i 7 byte relativi ai
//corrispondenti registri
byte secondi = Wire.read();
byte minuti = Wire.read();
byte ora = Wire.read();
byte giorno_sett = Wire.read();
byte giorno_mese = Wire.read();
byte mese = Wire.read();
byte anno = Wire.read();
Serial.print("Orario corrente: ");
Serial.print(ora, HEX);
Serial.print(":");
Serial.print(minuti, HEX);
Serial.print(":");
Serial.println(secondi, HEX);
Serial.print("Giorno della settimana: ");
Serial.println(giorno_sett, HEX);
Serial.print("Data corrente: ");
Serial.print(giorno_mese, HEX);
Serial.print("/");
Serial.print(mese, HEX);
Serial.print("/");
Serial.println(anno, HEX);
Serial.println();
lcd.setCursor(0, 1);
lcd.print("Ora:");
lcd.setCursor(5, 1);
lcd.print(ora, HEX);
lcd.print(":");
lcd.print(minuti, HEX);
DateTime now = RTC.now();
if (now.second() == 0) {
if (acceso == 0) {
controllatempoinizio();
} else {
controllatempofine();
}
if (confermainizio == 1) {
accendiirrigatori();
}
if (confermafine == 1) {
spegniirrigatori();
}
}
}
delay(1000);
}
byte controllatempoinizio() {
DateTime now = RTC.now();
if (now.hour() == orainizioirrigazione && now.minute() == minutiinizioirrigazione) {
confermainizio = 1; // If our start hour and minute match the current time, set 'on' flags
acceso = 1;
} else {
confermainizio = 0; // Otherwise we don't need to power up the lights yet
}
return confermainizio; // Return the status for powering up
}
byte controllatempofine() {
DateTime now = RTC.now();
if (now.hour() == orafineirrigazione && now.minute() == minutifineirrigazione) {
confermafine = 1;
acceso = 0;
} else {
confermafine = 0;
}
return confermafine;
}
void accendiirrigatori() {
digitalWrite(irrigatore1, HIGH);
digitalWrite(irrigatore2, HIGH);
digitalWrite(irrigatore3, HIGH);
digitalWrite(irrigatore4, HIGH);
digitalWrite(irrigatore5, HIGH);
digitalWrite(irrigatore6, HIGH);
}
void spegniirrigatori() {
digitalWrite(irrigatore1, LOW);
digitalWrite(irrigatore2, LOW);
digitalWrite(irrigatore3, LOW);
digitalWrite(irrigatore4, LOW);
digitalWrite(irrigatore5, LOW);
digitalWrite(irrigatore6, LOW);
}
un altra domanda come faccio che il valore conta non possa superare il 10 ?