Hi...i'm planning to display CSV serial out to LCD....but it only display 0 watt and 0 kwh...no change at all...please do reply....
Here is the code:
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>LiquidCrystal lcd(9,8,7,6,5,4);
const int lcdLed=13;
const int pulseLed=12;char incomingByte;
int i;
const int rxPin=2;
const int txPin=3;
const int byteSize=53;char * range;
char * watts;
char * va;
char * var;
char * pf;
char * volts;
char * amps;char buffer[53];
bool startDataReceived=false;
bool dataAvailable=false;SoftwareSerial mySerial(rxPin,txPin);
float wattHour,currentConsumption,currentwattHour;
float wattSecond=0;
float lastConsumption=0;
float KWHInterval=1000;void setup(){
pinMode(lcdLed,OUTPUT);
digitalWrite(lcdLed,HIGH);
pinMode(pulseLed,OUTPUT);
digitalWrite(pulseLed,LOW);
lcd.begin(16,2);
Serial.begin(9600);
mySerial.begin(9600);}void extractData(){
if(mySerial.available()>0){
incomingByte=mySerial.read();
if(incomingByte=='I'){
startDataReceived=true;
buffer[0]=incomingByte;}}
if((startDataReceived==true)&&(mySerial.available()>0)){
for(i=1;i<byteSize;i++){
while(mySerial.available()==0){}
buffer*=mySerial.read();}*
startDataReceived=false;*
dataAvailable=true;}*
if(dataAvailable==true){*
range=strtok(buffer, ",");*
watts=strtok(NULL, ",");*
va=strtok(NULL, ",");*
var=strtok(NULL, ",");*
pf=strtok(NULL, ",");*
volts=strtok(NULL, ",");*
amps=strtok(NULL, ",");*
Serial.print("Watts: "); Serial.println(watts);*
Serial.print("Va: "); Serial.println(va);*
Serial.print("Var: "); Serial.println(var);*
Serial.print("Pf: "); Serial.println(pf);*
Serial.print("Volts: "); Serial.println(volts);*
Serial.print("Amps: "); Serial.println(amps);*
memset(buffer,NULL,byteSize);*
dataAvailable=false;}}*
void pulseOn(){
- digitalWrite(pulseLed,HIGH);*
- delay(5000);*
- digitalWrite(pulseLed,LOW);}*
void displayData(){
lcd.setCursor(0,0);
lcd.print(wattSecond,0);
lcd.print("w ");
lcd.setCursor(0,1);
lcd.print(wattHour/1000, 4);
lcd.print("kwh ");}void loop(){
- extractData();*
- wattSecond+=atof(watts);*
- currentwattHour=wattSecond/3600;*
- wattHour=wattSecond/3600;*
- displayData();*
- currentConsumption=currentwattHour;*
- if((currentConsumption-lastConsumption)>(KWHInterval)){*
- lastConsumption+=KWHInterval;*
- pulseOn();}}*
[/quote]