#include <SoftwareSerial.
h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#define RE 8
#define DE 7
//const byte code[]= {0x01, 0x03, 0x00, 0x1e, 0x00, 0x03, 0x65, 0xCD};
const byte nitro[] = {0x01,0x03, 0x00, 0x1e, 0x00, 0x01, 0xe4, 0x0c};
const byte phos[] = {0x01,0x03, 0x00, 0x1f, 0x00, 0x01, 0xb5, 0xcc};
const byte pota[] = {0x01,0x03, 0x00, 0x20, 0x00, 0x01, 0x85, 0xc0};
byte values[11];
SoftwareSerial mod(2,3);
void setup() {
[Link](9600);
[Link](9600);
pinMode(RE, OUTPUT);
pinMode(DE, OUTPUT);
[Link](SSD1306_SWITCHCAPVCC, 0x3C); //initialize with the I2C addr 0x3C
(128x64)
delay(500);
[Link]();
[Link](25, 15);
[Link](1);
[Link](WHITE);
[Link](" NPK Sensor");
[Link](25, 35);
[Link](1);
[Link]("Initializing");
[Link]();
delay(3000);
}
void loop() {
byte val1,val2,val3;
val1 = nitrogen();
delay(250);
val2 = phosphorous();
delay(250);
val3 = potassium();
delay(250);
[Link]("Nitrogen: ");
[Link](val1);
[Link](" mg/kg");
[Link]("Phosphorous: ");
[Link](val2);
[Link](" mg/kg");
[Link]("Potassium: ");
[Link](val3);
[Link](" mg/kg");
delay(2000);
[Link]();
[Link](2);
[Link](0, 5);
[Link]("N: ");
[Link](val1);
[Link](1);
[Link](" mg/kg");
[Link](2);
[Link](0, 25);
[Link]("P: ");
[Link](val2);
[Link](1);
[Link](" mg/kg");
[Link](2);
[Link](0, 45);
[Link]("K: ");
[Link](val3);
[Link](1);
[Link](" mg/kg");
[Link]();
}
byte nitrogen(){
digitalWrite(DE,HIGH);
digitalWrite(RE,HIGH);
delay(10);
if([Link](nitro,sizeof(nitro))==8){
digitalWrite(DE,LOW);
digitalWrite(RE,LOW);
for(byte i=0;i<7;i++){
//[Link]([Link](),HEX);
values[i] = [Link]();
[Link](values[i],HEX);
}
[Link]();
}
return values[4];
}
byte phosphorous(){
digitalWrite(DE,HIGH);
digitalWrite(RE,HIGH);
delay(10);
if([Link](phos,sizeof(phos))==8){
digitalWrite(DE,LOW);
digitalWrite(RE,LOW);
for(byte i=0;i<7;i++){
//[Link]([Link](),HEX);
values[i] = [Link]();
[Link](values[i],HEX);
}
[Link]();
}
return values[4];
}
byte potassium(){
digitalWrite(DE,HIGH);
digitalWrite(RE,HIGH);
delay(10);
if([Link](pota,sizeof(pota))==8){
digitalWrite(DE,LOW);
digitalWrite(RE,LOW);
for(byte i=0;i<7;i++){
//[Link]([Link](),HEX);
values[i] = [Link]();
[Link](values[i],HEX);
}
[Link]();
}
return values[4];
}