No comments for all my mistakes on code...
The problem was just linked with a wrong position of variable declaration...
Now I hope I can use this on Processing
Great thanks for your support
#include <Wire.h>
//definition of pin on Arduino board
const int PIR1 = 2;
const int PIR2 = 3;
const int LED1 = 4;
const int LED2 = 5;
const int pinPot=A0;
//Definition of variables to use
int val1 = 0; //PIR1 value
int val2 = 0; //PIR2 value
int reading = 0; //US value
int oldreading = 0; //oldUS value
int count = 0; //counter to keep LED turned on
int calibrationTime = 5; //calibration time of PIR sensors
void setup()
{
Wire.begin(); // start the I2C bus
Serial.begin(9600); // open the serial port:
//Definition of input/output values
pinMode(PIR1,INPUT);
pinMode(PIR2,INPUT);
pinMode(LED1,OUTPUT);
pinMode(LED2,OUTPUT);
//give the sensor some time to calibrate
Serial.println("Sensor Calibration in Progress");
Serial.println("------------------------------");
for(int i = 0; i < calibrationTime; i++){
Serial.print(".");
digitalWrite(LED1, HIGH);
delay(250);
digitalWrite(LED2, HIGH);
delay(250);
digitalWrite(LED1, LOW);
delay(250);
digitalWrite(LED2, LOW);
delay(250);
}
Serial.println("");
Serial.println("Sensor Calibration Completed");
Serial.println("Sensor Reading Active");
delay(100);
}
void loop()
{
passiveIR();
ultrasonic();
presence();
}
void passiveIR()
{
val1 = digitalRead(PIR1);
val2 = digitalRead(PIR2);
}
void ultrasonic()
{
// step 1: instruct sensor to read centimeters
Wire.beginTransmission(112); // transmit to device #112 (0x70)
// the address specified in the datasheet is 224 (0xE0)
// but i2c adressing uses the high 7 bits so it's 112
Wire.write(byte(0x00)); // sets register pointer to the command register (0x00)
Wire.write(byte(0x51)); // command sensor to measure in "inches" (0x50)
// use 0x51 for centimeters
// use 0x52 for ping microseconds
Wire.endTransmission(); // stop transmitting
// step 2: wait for readings to happen
delay(70); // datasheet suggests at least 65 milliseconds
// step 3: instruct sensor to return a particular echo reading
Wire.beginTransmission(112); // transmit to device #112
Wire.write(byte(0x02)); // sets register pointer to echo #1 register (0x02)
Wire.endTransmission(); // stop transmitting
// step 4: request reading from sensor
Wire.requestFrom(112, 2); // request 2 bytes from slave device #112
// step 5: receive reading from sensor
if(2 <= Wire.available()) // if two bytes were received
{
oldreading = reading;
reading = Wire.read(); // receive high byte (overwrites previous reading)
reading = reading << 8; // shift high byte to be high 8 bits
reading |= Wire.read(); // receive low byte as lower 8 bits
}
delay(25); // wait before next reading:
}
void presence()
{
int f = reading - oldreading;
if((val1 == HIGH) && (val2 == HIGH) && (f < 15)){
Serial.print('1');
Serial.print(';');
}
if((val1 == LOW) || (val2 == LOW) || f >15){
Serial.print('0');
Serial.print(';');
count = 1;
if(count > 0){
count=count+1;
digitalWrite(LED1, HIGH);
}
if(count == 50){
digitalWrite(LED1, LOW);
count = 0;
}
}
}