Hi,
I have got a problem. Hardware Uno, LCD03 (i2c), 2 buttons, 1 LED
Cabling is ok. I would like to make a chronometer that start with BP0 (input2) and sop with bp1 (input3). Everything manage by interuptions.
Code:
#include <MsTimer2.h>
#include <Wire.h>
#define adresseLcd 0x63 //address lcd03
const int LED=4; //led
const int BtStart = 0; // Interrupt 0 pin 2
const int BtStop = 1; // Interrupt 0 pin 3
int Timer1, Timer2, TimerVal = 0;
void setup()
{
Serial.begin(9600);
pinMode(LED, OUTPUT);
MsTimer2::set(1000, InterruptTimer2); // 1000ms
MsTimer2::start(); // active Timer 2
attachInterrupt(BtStart, vStart, RISING);
attachInterrupt(BtStop, vStop, RISING);
Wire.begin();
Wire.beginTransmission(addressLcd);
Wire.write((byte)(0x00)); //null
Wire.write((byte)(0x01)); //go home
Wire.write((byte)(0x13)); //turn on backlight
Wire.write((byte)(0x0C)); //clear screen
Wire.write("Wait...");
Wire.endTransmission();
//Wait still show
}
void loop(){
}
void write2i2c ( )
{
Serial.println("First");
//Wire.begin();
Wire.beginTransmission(adDressLcd);
Wire.write((byte)(0x00)); //null
Wire.write((byte)(0x01)); //go home
//Wire.write((byte)(0x0C)); //clear screen
Wire.write("First");
Wire.endTransmission();
}
void InterruptTimer2() { // interupt Timer2
digitalWrite(LED, HIGH);
delayMicroseconds(10000);
digitalWrite(LED, LOW);
TimerVal +=1;
Serial.println(TimerVal); //I could see values in COM
}
void vStart()
{
TimerVal =0;
write2i2c();
}
void vStop()
{
Timer1 = TimerVal;
Serial.println(Timer1);
}
But when I pushed on BP0, the program stop. Where is the problème. I have to stop interupt during i2c??
Thanks
Maxmax