ได้เจอ กับ IntoRobot-nut (Gravitech WLWF-1500) ราคา 350 บาท รวมภาษีมูลค่าเพิ่มแล้ว ที่แรกก็เห็นว่าเป็นแค่ ESP8266 กำลังอยู่ในกระแส เลยตัดสินใจชื้อมาเพราะมีเชนเชอร์แสง และ RGB LED มาให้ และราคาก็สมน้ำสมเนื้อ ขนาดเล็ก มีหัว USB type C มาให้ด้วย
ส่วน USB to Serial พอรับได้ เพราะโครงงานที่ทำคงแค่เอาไว้จ่ายไฟเท่านั้น
พอได้มาก็เริ่มด้วยการหาคู่มือ สิ่งที่พบคือไม่มีคู่มือภาษาอังกฤษหรือภาษาไทยเลย มีแต่ภาษาจีน ซึ่งผู้เขียนอ่านไม่ออกได้แต่ดูรูปภาพ นึกในใจว่าต้องมานั่งเทียนวาดวงจรให้เขาด้วยหรือป่าว
ผู้เขียนขอเริ่ม รีวิว เจ้า IntoRobot-Nut กันเลย
คุณลักษณะ ดังนี้
1. ขนาดบอร์ด xx
2.MCU : ESP8266
3.USB to Serial
4.USB type C
5.WiFi ในตัว
6.User button 1 ปุ่ม
7.เซนเซอร์แสง สองขาทั่วไป ไม่ได้ระบุ ยี่ห้อ-รุ่น
8.RGB LED เดาว่าเป็น WS2812
9.ปุ่ม รีเซต บอร์ด
ด้วยความที่เข้า IntoRobot-nut นั้นมี Firmware สำหรับ เล่นกับ app ของ IntoRobot มาให้เลย
เริ่มเล่นกันเลย
1. เสียบไฟเข้าบอร์ด จะมีไฟกระพริบสีแดงที่ RGB LED ถือว่าปกติ
2.โหลด app IntoRobot ทั้ง IOS และ Android
3.สมัคร สมาชิก ที่หน้า เว็บ Intorobot ก่อน เมื่อได้รับ E-mail ตอบรับสมาชัก
4.ให้มือถือเราต่อกับ Wifi ที่บ้านเราก่อนนะครับ ถ้าไม่มีก็สามารถใช้มือถือปล่อย wifi ได้ และต้อมมี มือถืออีกเครื่องสำหรับเล่น app
5. เมื่อ เข้า app และ Login เข้าระบบแล้ว
6.add device สังเกตต้องให้บอร์ดเป็นไฟสีแดง
7.add sensor หรือ tool
เพียงเท่านี้ก็สามารถเล่น app กับ บอร์ด IntoRobot-nut ได้เลย
IDE Arduino code: see below
#include <NeoPixelBus.h>
#define pixelCount 1 // this example assumes 4 pixels, making it smaller will cause a failure
#define pixelPin 5 // make sure to set this to the correct pin
#define colorSaturation 128
NeoPixelBus strip = NeoPixelBus(pixelCount, pixelPin);
// NeoPixelBus strip = NeoPixelBus(pixelCount, pixelPin, NEO_RGB);
//
// some pixels require the color components to be in a different order
// using the flag NEO_GRB will use the order; green, red, then blue.
//
void setup()
{
// this resets all the neopixels to an off state
strip.Begin();
strip.Show();
}
void loop()
{
// set the colors,
// if they don't match in order, you may need to use NEO_GRB flag
for(int i=0;i<128;i++)
{
strip.SetPixelColor(0,i,0,0);
strip.Show();
delay(10);
}
for(int i=128;i>1;i--)
{
strip.SetPixelColor(0,i,0,0);
strip.Show();
delay(10);
}
///////////////////////////////////////////////dim Red /////////////////////////////////
for(int i=0;i<128;i++)
{
strip.SetPixelColor(0,0,i,0);
strip.Show();
delay(10);
}
for(int i=128;i>1;i--)
{
strip.SetPixelColor(0,0,i,0);
strip.Show();
delay(10);
}
///////////////////////////////////////////////dim green /////////////////////////////////
for(int i=0;i<128;i++)
{
strip.SetPixelColor(0,0,0,i);
strip.Show();
delay(10);
}
for(int i=128;i>1;i--)
{
strip.SetPixelColor(0,0,0,i);
strip.Show();
delay(10);
}
///////////////////////////////////////////////dim blue/////////////////////////////////
}
TEST Light Sensor
jump wire between LS pin and A0
int photocellPin = 0; // the cell and 10K pulldown are connected to a0
int photocellReading; // the analog reading from the analog resistor divider
void setup(void) {
// We'll send debugging information via the Serial monitor
Serial.begin(9600);
}
void loop(void) {
photocellReading = analogRead(photocellPin);
Serial.print("Analog reading = ");
Serial.print(photocellReading); // the raw analog reading
// We'll have a few threshholds, qualitatively determined
if (photocellReading < 10) {
Serial.println(" - Dark");
} else if (photocellReading < 200) {
Serial.println(" - Dim");
} else if (photocellReading < 500) {
Serial.println(" - Light");
} else if (photocellReading < 800) {
Serial.println(" - Bright");
} else {
Serial.println(" - Very bright");
}
delay(1000);
}
//https://electropeak.com/learn/control-ws2812-rgb-led-neopixel-w-arduino-tutorial/
// NeoPixel Ring simple sketch (c) 2013 Shae Erisson
// Released under the GPLv3 license to match the rest of the
// Adafruit NeoPixel library
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
// Which pin on the Arduino is connected to the NeoPixels?
#define PIN 5 // On Trinket or Gemma, suggest changing this to 1
// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 1 // Popular NeoPixel ring size
// When setting up the NeoPixel library, we tell it how many pixels,
// and which pin to use to send signals. Note that for older NeoPixel
// strips you might need to change the third parameter -- see the
// strandtest example for more information on possible values.
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 500 // Time (in milliseconds) to pause between pixels
void setup() {
// These lines are specifically to support the Adafruit Trinket 5V 16 MHz.
// Any other board, you can remove this part (but no harm leaving it):
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
// END of Trinket-specific code.
pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
}
void loop() {
pixels.clear(); // Set all pixel colors to 'off'
// The first NeoPixel in a strand is #0, second is 1, all the way up
// to the count of pixels minus one.
for(int i=0; i<NUMPIXELS; i++) { // For each pixel...
// pixels.Color() takes RGB values, from 0,0,0 up to 255,255,255
// Here we're using a moderately bright green color:
pixels.setPixelColor(i, pixels.Color(random(0, 10), random(0, 10),random(0, 10)));
pixels.show(); // Send the updated pixel colors to the hardware.
delay(DELAYVAL); // Pause before next pass through loop
}
}
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
#define PIN 5 // On Trinket or Gemma, suggest changing this to 1
#define NUMPIXELS 1 // Popular NeoPixel ring size
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 500 // Time (in milliseconds) to pause between pixels
byte variable[24];
byte iindex = 0;
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 4); // RX, TX
void setup() {
// These lines are specifically to support the Adafruit Trinket 5V 16 MHz.
// Any other board, you can remove this part (but no harm leaving it):
//#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
// clock_prescale_set(clock_div_1);
//#endif
pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
Serial.begin(9600);
mySerial.begin(9600);
//delay(3000);
Serial.println("+++ Search ID +++");
}
void loop() {
while (mySerial.available() > 0) {
byte b = mySerial.read();
variable[iindex++] = b;
}
if (iindex == 24) {
//Serial.print("byte 1 start byte 1 0x42 variable 0: "); Serial.println(variable[0], HEX);
//Serial.print("byte 2 start byte 2 0x4D variable 1: "); Serial.println(variable[1], HEX);
//Serial.print("byte 3 Frame lenght 0x00 variable 2: "); Serial.println(variable[2], HEX);
//Serial.print("byte 4 Frame lenght 0x14 variable 3: "); Serial.println(variable[3], HEX);
//Serial.print("byte 5 DATA1 ResrvedHigh variable 4: "); Serial.println(variable[4], HEX);
//Serial.print("byte 6 DATA1 ResrvedLow variable 5: "); Serial.println(variable[5], HEX);
//Serial.print("byte 7 DATA2 ResrvedHigh variable 6: "); Serial.println(variable[6], HEX);
//Serial.print("byte 8 DATA2 ResrvedLow variable 7: "); Serial.println(variable[7], HEX);
//Serial.print("byte 9 DATA3 ResrvedHigh variable 8: "); Serial.println(variable[8], HEX);
//Serial.print("byte 10 DATA3 ResrvedLow variable 9: "); Serial.println(variable[9], HEX);
//Serial.print("Byte 11 DATA4 PM1.0 High variable 10: "); Serial.println(variable[10], HEX);
//Serial.print("byte 12 DATA4 PM1.0 Low variable 11: "); Serial.println(variable[11], HEX);
Serial.print(" PM1.0 : "); Serial.print( (variable[10]<<8) | variable[11], DEC);Serial.println(" µg/m³");
//Serial.print("Byte 13 DATA5 PM2.5 High variable 12: "); Serial.println(variable[12], HEX);
//Serial.print("Byte 14 DATA4 PM2.5 Low variable 13: "); Serial.println(variable[13], HEX);
Serial.print(" PM2.5 : "); Serial.print( (variable[12]<<8) | variable[13], DEC);Serial.println(" µg/m³");
//Serial.print("Byte 15 DATA5 PM10 High variable 14: "); Serial.println(variable[14], HEX);
//Serial.print("Byte 16 DATA4 PM10 Low variable 15: "); Serial.println(variable[15], HEX);
Serial.print(" PM10 : "); Serial.print( (variable[14]<<8) | variable[15], DEC);Serial.println(" µg/m³");
//Serial.print("Byte 17 DATA5 ResrvedHigh variable 16: "); Serial.println(variable[16], HEX);
//Serial.print("Byte 18 DATA4 ResrvedLow variable 17: "); Serial.println(variable[17], HEX);
//Serial.print("byte 19 DATA3 ResrvedHigh variable 18: "); Serial.println(variable[18], HEX);
//Serial.print("byte 20 DATA3 ResrvedLow variable 19: "); Serial.println(variable[19], HEX);
//Serial.print("byte 21 DATA3 ResrvedHigh variable 20: "); Serial.println(variable[20], HEX);
//Serial.print("byte 22 DATA3 ResrvedLow variable 21: "); Serial.println(variable[21], HEX);
//Serial.print("byte 23 DATA3 Check High variable 22: "); Serial.println(variable[22], HEX);
//Serial.print("byte 24 DATA3 Check Low variable 23: "); Serial.println(variable[23], HEX);
if( ((variable[12]<<8) | variable[13]) <=37 ){
pixels.clear(); // Set all pixel colors to 'off'
pixels.setPixelColor(0, pixels.Color(0,25,0)); //green
pixels.show(); // Send the updated pixel colors to the hardware.
delay(DELAYVAL); // Pause before next pass through loop
}
else if ( ((variable[12]<<8) | variable[13]) >=38 && ((variable[12]<<8) | variable[13])<=50 ){
pixels.clear(); // Set all pixel colors to 'off'
pixels.setPixelColor(0, pixels.Color(25, 25,0)); //yellow
pixels.show(); // Send the updated pixel colors to the hardware.
delay(DELAYVAL); // Pause before next pass through loop
}
else if ( ((variable[12]<<8) | variable[13]) >50 && ((variable[12]<<8) | variable[13])<=90 ){
pixels.clear(); // Set all pixel colors to 'off'
pixels.setPixelColor(0, pixels.Color(25, 10,0)); //orenge
pixels.show(); // Send the updated pixel colors to the hardware.
delay(DELAYVAL); // Pause before next pass through loop
}
else if ( ((variable[12]<<8) | variable[13]) >90 ){
pixels.clear(); // Set all pixel colors to 'off'
pixels.setPixelColor(0, pixels.Color(25,0,0)); //red
pixels.show(); // Send the updated pixel colors to the hardware.
delay(DELAYVAL); // Pause before next pass through loop
}
//Serial.print("Check Sum variable 1-22 : "); Serial.print((variable[0] + variable[1]+ variable[2]+ variable[3]+ variable[4]+ variable[5]+ variable[6]+ variable[7]+ variable[8]+ variable[9]+ variable[10]+ variable[11]+ variable[12]+ variable[13]+ variable[14]+ variable[15]+ variable[16]+ variable[17]+ variable[18]+ variable[19]+ variable[20]+ variable[21]), HEX);
if ( (variable[0] + variable[1]+ variable[2]+ variable[3]+ variable[4]+ variable[5]+ variable[6]+ variable[7]+ variable[8]+ variable[9]+ variable[10]+ variable[11]+ variable[12]+ variable[13]+ variable[14]+ variable[15]+ variable[16]+ variable[17]+ variable[18]+ variable[19]+ variable[20]+ variable[21]) == ( (variable[22]<<8) | variable[23] ) ) {
Serial.println(" Check Sum OK");
}
else Serial.println(" Check Sum NO OK");
iindex = 0;
Serial.println(' ');
}
}
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Fonts/FreeMono12pt7b.h>
#define SCREEN_WIDTH 128 // pixel ความกว้าง
#define SCREEN_HEIGHT 64 // pixel ความสูง
// กำหนดขาต่อ I2C กับจอ OLED
#define OLED_RESET -1 //ขา reset เป็น -1 ถ้าใช้ร่วมกับขา Arduino reset
Adafruit_SSD1306 OLED(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
int var = 0; // ตัวแปรสำหรับทดสอบแสดงผล
void setup() {
Serial.begin(9600);
Wire.begin(14,4); //SDA,SCL
if (!OLED.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // สั่งให้จอ OLED เริ่มทำงานที่ Address 0x3C
Serial.println("SSD1306 allocation failed");
} else {
Serial.println("ArdinoAll OLED Start Work !!!");
}
}
void loop() {
OLED.clearDisplay(); // ลบภาพในหน้าจอทั้งหมด
OLED.setTextColor(WHITE, BLACK); //กำหนดข้อความสีขาว ฉากหลังสีดำ
OLED.setCursor(0, 0); // กำหนดตำแหน่ง x,y ที่จะแสดงผล
//OLED.setTextSize(2); // กำหนดขนาดตัวอักษร
//OLED.println("OLED"); // แสดงผลข้อความ ALL
//OLED.setTextSize(1);
//OLED.print("welcome to");
//OLED.println(" All");
//OLED.setTextColor(BLACK, WHITE); //กลับสีข้อความกับพื้นหลัง
//OLED.print("www.arduinoall.com");
OLED.setTextColor(WHITE, BLACK);
OLED.setCursor(0, 0);//60,0
OLED.setTextSize(3);
OLED.println(var, DEC);
//OLED.setCursor(0, 40);
//OLED.setTextSize(2);
//OLED.println("ArduinoALL"); // แสดงผลข้อความ ALL
OLED.display(); // สั่งให้จอแสดงผล
var++;
delay(10);
}
//end-----------------------------------------------------------------------------
//----------lib ssd1306-----------
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Fonts/FreeSans18pt7b.h>
#define SCREEN_WIDTH 128 // pixel ความกว้าง
#define SCREEN_HEIGHT 64 // pixel ความสูง 32
// กำหนดขาต่อ I2C กับจอ OLED
#define OLED_RESET -1 //ขา reset เป็น -1 ถ้าใช้ร่วมกับขา Arduino reset
Adafruit_SSD1306 OLED(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
int var = 0; // ตัวแปรสำหรับทดสอบแสดงผล
//----------WS2812-----------------
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
#define PIN 5 // On Trinket or Gemma, suggest changing this to 1
#define NUMPIXELS 1 // Popular NeoPixel ring size
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 500 // Time (in milliseconds) to pause between pixels
byte variable[24];
byte iindex = 0;
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 5); // RX, TX
void setup() {
//pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
Serial.begin(9600);
mySerial.begin(9600);
Wire.begin(14,4); //SDA,SCL
if (!OLED.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // สั่งให้จอ OLED เริ่มทำงานที่ Address 0x3C
Serial.println("SSD1306 allocation failed");
} else {
Serial.println("ArdinoAll OLED Start Work !!!");
}
}
void loop() {
while (mySerial.available() > 0) {
byte b = mySerial.read();
variable[iindex++] = b;
}
if (iindex == 24) {
//Serial.print("byte 1 start byte 1 0x42 variable 0: "); Serial.println(variable[0], HEX);
//Serial.print("byte 2 start byte 2 0x4D variable 1: "); Serial.println(variable[1], HEX);
//Serial.print("byte 3 Frame lenght 0x00 variable 2: "); Serial.println(variable[2], HEX);
//Serial.print("byte 4 Frame lenght 0x14 variable 3: "); Serial.println(variable[3], HEX);
//Serial.print("byte 5 DATA1 ResrvedHigh variable 4: "); Serial.println(variable[4], HEX);
//Serial.print("byte 6 DATA1 ResrvedLow variable 5: "); Serial.println(variable[5], HEX);
//Serial.print("byte 7 DATA2 ResrvedHigh variable 6: "); Serial.println(variable[6], HEX);
//Serial.print("byte 8 DATA2 ResrvedLow variable 7: "); Serial.println(variable[7], HEX);
//Serial.print("byte 9 DATA3 ResrvedHigh variable 8: "); Serial.println(variable[8], HEX);
//Serial.print("byte 10 DATA3 ResrvedLow variable 9: "); Serial.println(variable[9], HEX);
//Serial.print("Byte 11 DATA4 PM1.0 High variable 10: "); Serial.println(variable[10], HEX);
//Serial.print("byte 12 DATA4 PM1.0 Low variable 11: "); Serial.println(variable[11], HEX);
Serial.print(" PM1.0 : "); Serial.print( (variable[10]<<8) | variable[11], DEC);Serial.println(" µg/m³");
//Serial.print("Byte 13 DATA5 PM2.5 High variable 12: "); Serial.println(variable[12], HEX);
//Serial.print("Byte 14 DATA4 PM2.5 Low variable 13: "); Serial.println(variable[13], HEX);
Serial.print(" PM2.5 : "); Serial.print( (variable[12]<<8) | variable[13], DEC);Serial.println(" µg/m³");
//Serial.print("Byte 15 DATA5 PM10 High variable 14: "); Serial.println(variable[14], HEX);
//Serial.print("Byte 16 DATA4 PM10 Low variable 15: "); Serial.println(variable[15], HEX);
Serial.print(" PM10 : "); Serial.print( (variable[14]<<8) | variable[15], DEC);Serial.println(" µg/m³");
//Serial.print("Byte 17 DATA5 ResrvedHigh variable 16: "); Serial.println(variable[16], HEX);
//Serial.print("Byte 18 DATA4 ResrvedLow variable 17: "); Serial.println(variable[17], HEX);
//Serial.print("byte 19 DATA3 ResrvedHigh variable 18: "); Serial.println(variable[18], HEX);
//Serial.print("byte 20 DATA3 ResrvedLow variable 19: "); Serial.println(variable[19], HEX);
//Serial.print("byte 21 DATA3 ResrvedHigh variable 20: "); Serial.println(variable[20], HEX);
//Serial.print("byte 22 DATA3 ResrvedLow variable 21: "); Serial.println(variable[21], HEX);
//Serial.print("byte 23 DATA3 Check High variable 22: "); Serial.println(variable[22], HEX);
//Serial.print("byte 24 DATA3 Check Low variable 23: "); Serial.println(variable[23], HEX);
OLED.clearDisplay(); // ลบภาพในหน้าจอทั้งหมด
//OLED.setTextColor(WHITE, BLACK); //กำหนดข้อความสีขาว ฉากหลังสีดำ
//OLED.setCursor(0, 0); // กำหนดตำแหน่ง x,y ที่จะแสดงผล
//OLED.setTextSize(2); // กำหนดขนาดตัวอักษร
//OLED.println("OLED"); // แสดงผลข้อความ ALL
//OLED.setTextSize(2);
//OLED.print("welcome to");
//OLED.println(" All");
//OLED.setTextColor(BLACK, WHITE); //กลับสีข้อความกับพื้นหลัง
//OLED.print("www.arduinoall.com");
//if
OLED.setTextColor(WHITE, BLACK);
//OLED.setCursor(0, 60);//60,0
//OLED.setTextSize(2);
//OLED.setFont(&FreeSans18pt7b);
if( ((variable[12]<<8) | variable[13]) >=100 ){
OLED.setCursor(0, 60);//60,0
OLED.setTextSize(2);
OLED.setFont(&FreeSans18pt7b);
OLED.println((variable[12]<<8) | variable[13], DEC);
}else if (((variable[12]<<8) | variable[13]) >10 ){
OLED.setCursor(0, 60);//60,0
OLED.setTextSize(2);
OLED.setFont(&FreeSans18pt7b);
OLED.println( ( (variable[12]<<8) | variable[13])/100, DEC);
OLED.setCursor(40, 60);//60,0
OLED.setTextSize(2);
OLED.setFont(&FreeSans18pt7b);
OLED.println( ( (variable[12]<<8) | variable[13])/10 , DEC);
//}else{
OLED.setCursor(80, 60);//60,0
OLED.setTextSize(2);
OLED.setFont(&FreeSans18pt7b);
OLED.println( ( (variable[12]<<8)|variable[13] )%10, DEC);
}else{
OLED.setCursor(0, 60);//60,0
OLED.setTextSize(2);
OLED.setFont(&FreeSans18pt7b);
OLED.println( ( (variable[12]<<8) | variable[13])/100, DEC);
OLED.setCursor(40, 60);//60,0
OLED.setTextSize(2);
OLED.setFont(&FreeSans18pt7b);
OLED.println( ( (variable[12]<<8) | variable[13])/10 , DEC);
//}else{
OLED.setCursor(80, 60);//60,0
OLED.setTextSize(2);
OLED.setFont(&FreeSans18pt7b);
OLED.println( ( (variable[12]<<8)|variable[13] ), DEC);
}
//OLED.setCursor(0, 40);
//OLED.setTextSize(2);
//OLED.println("ArduinoALL"); // แสดงผลข้อความ ALL
OLED.display(); // สั่งให้จอแสดงผล
var++;
delay(10);
if( ((variable[12]<<8) | variable[13]) <=37 ){
pixels.clear(); // Set all pixel colors to 'off'
pixels.setPixelColor(0, pixels.Color(0,25,0)); //green
pixels.show(); // Send the updated pixel colors to the hardware.
delay(DELAYVAL); // Pause before next pass through loop
}
else if ( ((variable[12]<<8) | variable[13]) >=38 && ((variable[12]<<8) | variable[13])<=50 ){
pixels.clear(); // Set all pixel colors to 'off'
pixels.setPixelColor(0, pixels.Color(25, 25,0)); //yellow
pixels.show(); // Send the updated pixel colors to the hardware.
delay(DELAYVAL); // Pause before next pass through loop
}
else if ( ((variable[12]<<8) | variable[13]) >50 && ((variable[12]<<8) | variable[13])<=90 ){
pixels.clear(); // Set all pixel colors to 'off'
pixels.setPixelColor(0, pixels.Color(25, 10,0)); //orenge
pixels.show(); // Send the updated pixel colors to the hardware.
delay(DELAYVAL); // Pause before next pass through loop
}
else if ( ((variable[12]<<8) | variable[13]) >90 ){
pixels.clear(); // Set all pixel colors to 'off'
pixels.setPixelColor(0, pixels.Color(25,0,0)); //red
pixels.show(); // Send the updated pixel colors to the hardware.
delay(DELAYVAL); // Pause before next pass through loop
}
//Serial.print("Check Sum variable 1-22 : "); Serial.print((variable[0] + variable[1]+ variable[2]+ variable[3]+ variable[4]+ variable[5]+ variable[6]+ variable[7]+ variable[8]+ variable[9]+ variable[10]+ variable[11]+ variable[12]+ variable[13]+ variable[14]+ variable[15]+ variable[16]+ variable[17]+ variable[18]+ variable[19]+ variable[20]+ variable[21]), HEX);
if ( (variable[0] + variable[1]+ variable[2]+ variable[3]+ variable[4]+ variable[5]+ variable[6]+ variable[7]+ variable[8]+ variable[9]+ variable[10]+ variable[11]+ variable[12]+ variable[13]+ variable[14]+ variable[15]+ variable[16]+ variable[17]+ variable[18]+ variable[19]+ variable[20]+ variable[21]) == ( (variable[22]<<8) | variable[23] ) ) {
Serial.println(" Check Sum OK");
}
else Serial.println(" Check Sum NO OK");
iindex = 0;
Serial.println(' ');
}
}