Non ho potuto provare lo sketch, ma dovrebbe funzionare:
#include <Adafruit_NeoPixel.h>
#include <SoftwareSerial.h>
#define PIN 1
#define NUMPIXELS 16
SoftwareSerial mySerial(3, 4); // RX, TX
float GradiK = 0.0;
float GradiC = 0.0;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin();
mySerial.begin(9600);
for (int a = 0; a < strip.numPixels(); a ++) { // All LED off
strip.setPixelColor(a, 0, 0, 0);
}
strip.show();
}
void loop() {
unsigned long Somma = 0;
for (byte i = 0; i < 10; i ++) {
Somma += analogRead(A0);
delayMicroseconds(260);
}
Somma /= 10;
GradiK = Somma * 500 / 1023.0;
GradiC = GradiK - 278;
mySerial.println(GradiC);
if (GradiC >= -10.0 && GradiC < -3.0) {
for (int a = 0; a < 2; a ++) { // White on first 2 LEDs
strip.setPixelColor(a, 200, 200, 200);
}
for (int a = 2; a < strip.numPixels(); a ++) { // All others LED off
strip.setPixelColor(a, 0, 0, 0);
}
}
else if (GradiC >= -3.0 && GradiC < 3.0) {
for (int a = 0; a < 4; a ++) { // Sky-Blue on first 4 LEDs
strip.setPixelColor(a, 0, 200, 200);
}
for (int a = 4; a < strip.numPixels(); a ++) { // All others LED off
strip.setPixelColor(a, 0, 0, 0);
}
}
else if (GradiC >= 3.0 && GradiC < 11.0) {
for (int a = 0; a < 7; a ++) { // Blue on first 7 LEDs
strip.setPixelColor(a, 0, 0, 200);
}
for (int a = 7; a < strip.numPixels(); a ++) { // All others LED off
strip.setPixelColor(a, 0, 0, 0);
}
}
else if (GradiC >= 11.0 && GradiC < 21.0) {
for (int a = 0; a < 10; a ++) { // Yellow on first 10 LEDs
strip.setPixelColor(a, 200, 200, 0);
}
for (int a = 10; a < strip.numPixels(); a ++) { // All others LED off
strip.setPixelColor(a, 0, 0, 0);
}
}
else if (GradiC >= 21.0 && GradiC < 30.0) {
for (int a = 0; a < 13; a ++) { // Orange on first 13 LEDs
strip.setPixelColor(a, 200, 50, 0);
}
for (int a = 13; a < strip.numPixels(); a ++) { // All others LED off
strip.setPixelColor(a, 0, 0, 0);
}
}
else if (GradiC >= 30.0 && GradiC < 40.0) {
for (int a = 0; a < 16; a ++) { // Red on first 16 LEDs
strip.setPixelColor(a, 200, 0, 0);
}
for (int a = 16; a < strip.numPixels(); a ++) { // All others LED off
strip.setPixelColor(a, 0, 0, 0);
}
}
strip.show();
delay(1000);
}