SmartCityZen återvinning med HX711 (5 / 6 steg)
Steg 5: Mottagarsystem
Mottagare kräver Arduino ansluten med 1602 displayen och RF mottagaren till 433 MHz enligt kopplingsschemat.
Och detta är skissen att ladda:
/* -------------------------------------------------------------------------------
Energieffektivitet produzione rifiuti casalinghi con SCZRE
CON display LCD 16 x 2 1602
CON registrazione i EPROM del totrifiuti
e dell'ultima pesata / /
*/
#include < LiquidCrystal.h >
#include < SPI.h >
#include < SD.h >
#include < Manchester.h >
#include < string.h >
#include < EEPROMex.h >
Anslutningar:
rs (LCD stift 4) till Arduino stift 12
RW (LCD pin 5) till Arduino stift 11
Aktivera (LCD stift 6) till Arduino stift 10
LCD stift 15 till Arduino stift 13
LCD stift d4, d5, d6 och d7 till Arduino stift 5, 4, 3, 2
Ricevitore RF connesso ett stift 7 arduino LiquidCrystal lcd (12, 11, 10, 5, 4, 3, 2);
int bakgrundsbelysning = 13. stift 13 kommer att kontrollera bakgrundsbelysningen < /p >< p > //Configurazione Libreria Manchester per trasmissione
#define RX_PIN 7
#define BUFFER_SIZE 50
uint8_t buffert [BUFFER_SIZE];
unsigned char meddelande [BUFFER_SIZE];
#define LED_PIN 13
char SensMessage [] = "SCZXX";
Memorizzazione totale rifiuti
String dataInizio = "02/01/2016";
int addressFloat = 0;
int addressFloatPeso = 5;
booleska scarico = hög;
flyta totRifiuti = 0,0;
flyta precPeso = 0;
flyta nowPeso = 0;
void setup()
{
Serial.BEGIN(9600);
EEPROM.writeFloat(addressFloat,totRifiuti);
EEPROM.writeFloat(addressFloatPeso,precPeso);
pinMode (bakgrundsbelysning, OUTPUT);
digitalWrite (bakgrundsbelysning, låg); aktivera bakgrundsbelysningen. Ersätt "Hög" med "Låg" att stänga av.
LCD.BEGIN (16, 2); kolumner, rader. använda 16,2 för en 16 x 2 LCD, etc.
LCD.Clear(); börja med en tom skärm
lcd.setCursor (0, 0); ställa markören till kolumn 0, raden 0 (första raden)
LCD.Print ("SCZ Recycle"); ändra texten till vad du vill. hålla den ren.
lcd.setCursor (0, 1); ställa markören till kolumn 0, rad 1
LCD.Print("smartcityzen.it");
totRifiuti = EEPROM.readFloat(0);
precPeso=EEPROM.readFloat(5);
Konfigurera Manchester
man.setupReceive (RX_PIN, MAN_600);
man.beginReceiveArray (BUFFER_SIZE, buffert);
Delay(500);
LCD.Clear(); börja med en tom skärm
lcd.setCursor (0, 0); ställa markören till kolumn 0, raden 0 (första raden)
LCD.Print("Attendi");
}
void loop()
{om (man.receiveComplete())
{
uint8_t receivedSize = 0;
Serial.println ("Ricevuto:");
digitalWrite (LED_PIN, hög);
Delay(100);
digitalWrite (LED_PIN, låg);
för (int jag = 0; jag < BUFFER_SIZE; i ++)
{meddelande [i] = char(buffer[i]);
Serial.Print(Char(Message[i]));
}
Serial.println();
Serial.Print ("SENSORE:");
för (int t = 0; t < 5; t ++)
{
SensMessage [t] = meddelande [t + 3];
}
String messstr = String(SensMessage);
Serial.println(messstr);
om (messstr == "SCZRE")
{
Serial.println ("Ricevuto un SCZ återvinning");
gestioneSCZRE();
}
man.beginReceiveArray (BUFFER_SIZE, buffert);
}
annat
{
lcd.setCursor (0, 0);
LCD.Print ("TOT:");
LCD.Print(totRifiuti+nowPeso);
LCD.Print ("KG");
Serial.Print("totRifiuti:"); Serial.println(totRifiuti);
lcd.setCursor (0, 1);
LCD.Print ("nu:");
LCD.Print(nowPeso);
LCD.Print ("KG");
Serial.Print("nowPeso:"); Serial.println(nowPeso);
}
}
//---------------------------------SCZRE--------------------------
void gestioneSCZRE()
{
Serial.Print ("i FUNZIONE:");
för (int jag = 0; jag < BUFFER_SIZE; i ++)
{
Serial.Print(Char(Message[i]));
}
String nowRifiuti = "";
Serial.Print("nowRifiuti:"); Serial.println(nowRifiuti);
för (int jag = 0; jag < 5; i ++)
{
nowRifiuti = nowRifiuti + char (meddelande [i + 15]);
Serial.Print (char (meddelande [i + 15]));
}
Serial.Print("nowRifiuti:"); Serial.println(nowRifiuti);
nowPeso = nowRifiuti.toFloat();
om (precPeso == 0)
{
precPeso = nowPeso;
}
om (nowPeso < 0,1 & & scarico == låg)
{
totRifiuti = totRifiuti + precPeso;
EEPROM.writeFloat(addressFloat,totRifiuti);
EEPROM.writeFloat(addressFloatPeso,precPeso);
scarico = hög;
}
om (nowPeso > 1)
{
scarico = låg;
}
Serial.Print("nowPeso:"); Serial.println(nowPeso);
}