Advertisement
TolentinoCotesta

sprintf

Jul 19th, 2018
302
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.35 KB | None | 0 0
  1. //LCD (no I2C) con DHT22
  2. //Tolentino Codesta - Cerani luglio 2018
  3. #include <LiquidCrystal.h>
  4. #include <DHT.h>
  5. #include <Adafruit_Sensor.h>
  6. #define DHTTYPE DHT11
  7. #define DHTPIN 9
  8. DHT dht(DHTPIN, DHTTYPE);
  9. float celsius;
  10. float humidity;
  11. const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
  12. LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
  13. void setup() {
  14.   dht.begin();
  15.   lcd.begin(16, 2);
  16. void loop() {
  17.   humidity = dht.readHumidity();
  18.   celsius = dht.readTemperature();
  19.    
  20.   // Il display è da 16 caratteri, quindi usiamo un array da 16 caratteri
  21.   char lcd_buffer[16];
  22.  
  23.   // Siccome arduino non gradisce i float dobbiamo usare un espediente
  24.   // Per stampare sul display la prima cifra decimale, moltiplichiamo *10 e calcoliamo il modulo 10 (operazione %10)
  25.   // la scrittura (int) prima della variabile, forza il micro a trattarla come integer al posto di float
  26.   // L'ultima variabile da inserire nel buffer, ovvero %c (variabile di tipo char) sono i caratteri speciali "°" e "%"
  27.   lcd.setCursor(0,0); //riposiziono il cursore
  28.   sprintf(lcd_buffer, "Temp.: %03d.%01d %cC", (int)celsius, (int)(celsius * 10.0)%10, (char)223);
  29.   lcd.print(lcd_buffer);
  30.  
  31.   lcd.setCursor(0,1); //riposiziono il cursore
  32.   sprintf(lcd_buffer, "Umidita' %03d.%01d%c", (int)humidity, (int)(humidity * 10.0)%10, (char)37);
  33.   lcd.print(lcd_buffer);
  34.  
  35.   delay (3000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement