hi there
my self sawan, i have made a sketch for arduino but i am unable to upload it,
hardware description
arduino uno , two metal sensor , 4ch relay module but i only using three relays
please see below the sketch..
unsigned long timerStart, timerEnd = 5000;
bool sensorVal= true, previousSensorVal = true;
void setup() {
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
void loop()
{
sensorVal = digitalRead(2);
if (sensorVal != previousSensorVal)
{ // same as (sensorVal == HIGH)
previousSensorVal = sensorVal;
timerStart = millis();
}
if(sensorVal)
{if(millis() - timerStart > timerEnd)
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
}
else
{if(millis() - timerStart > timerEnd)
digitalWrite(12, LOW);
digitalWrite(11, HIGH);
}
}
sensorVal = digitalRead(3);
if (sensorVal != previousSensorVal)
{ // same as (sensorVal == HIGH)
previousSensorVal = sensorVal;
timerStart = millis();
}
if(sensorVal)
{if(millis() - timerStart > timerEnd)
digitalWrite(13, LOW);
}
else
{if(millis() - timerStart > timerEnd)
digitalWrite(13, HIGH);
}
}
jaspalsinghh:
my self sawan, i have made a sketch for arduino but i am unable to upload it,
What error messages are you getting?
What version of the Arduino IDE are you using?
What PC operating system are you using?
...R
Arduino: 1.8.2 (Windows 7), Board: "Arduino/Genuino Uno"
sketch_jun06a:38: error: 'sensorVal' does not name a type
sensorVal = digitalRead(4);
^
sketch_jun06a:39: error: expected unqualified-id before 'if'
if (sensorVal != previousSensorVal)
^
sketch_jun06a:44: error: expected unqualified-id before 'if'
if(sensorVal)
^
sketch_jun06a:49: error: expected unqualified-id before 'else'
else
^
sketch_jun06a:54: error: expected declaration before '}' token
}
^
exit status 1
'sensorVal' does not name a type
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
You have an extra }
unsigned long timerStart, timerEnd = 5000;
bool sensorVal= true, previousSensorVal = true;
void setup() {
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
void loop()
{
sensorVal = digitalRead(2);
if (sensorVal != previousSensorVal)
{ // same as (sensorVal == HIGH)
previousSensorVal = sensorVal;
timerStart = millis();
}
if(sensorVal)
{if(millis() - timerStart > timerEnd)
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
}
else
{if(millis() - timerStart > timerEnd)
digitalWrite(12, LOW);
digitalWrite(11, HIGH);
}
} <<< here, so the code that follows is not part of loop()
sensorVal = digitalRead(3);
if (sensorVal != previousSensorVal)
{ // same as (sensorVal == HIGH)
previousSensorVal = sensorVal;
timerStart = millis();
}
if(sensorVal)
{if(millis() - timerStart > timerEnd)
digitalWrite(13, LOW);
}
else
{if(millis() - timerStart > timerEnd)
digitalWrite(13, HIGH);
}
}
SENSOR INPUT 2 WORK BUT 3 DOES NOT WORK , PIN 13 DID NOT RESPOND, PLS HELP
unsigned long timerStart, timerEnd = 5000;
bool sensorVal= true, previousSensorVal = true;
void setup() {
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
void loop()
{
sensorVal = digitalRead(2);
if (sensorVal != previousSensorVal)
{ // same as (sensorVal == HIGH)
previousSensorVal = sensorVal;
timerStart = millis();
}
if(sensorVal)
{if(millis() - timerStart > timerEnd)
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
}
else
{if(millis() - timerStart > timerEnd)
digitalWrite(12, LOW);
digitalWrite(11, HIGH);
}
sensorVal = digitalRead(3);
if (sensorVal != previousSensorVal)
{ // same as (sensorVal == HIGH)
previousSensorVal = sensorVal;
timerStart = millis();
}
if(sensorVal)
{if(millis() - timerStart > timerEnd)
digitalWrite(13, LOW);
}
else
{if(millis() - timerStart > timerEnd)
digitalWrite(13, HIGH);
}
}
Try changing the sensorVal's, etc. associated with digitalRead(3)
to sensorVal1 & previousSensorVal1
Don't you want a."previous" value for each pin?
Don't you want to use code tags?
Don't you want to stop SHOUTING?
INPUT 2 WORK BUT 3 DOES NOT WORK PLEASE HELP.
INPUT 2 ENABLE PIN 11 AND 12 SIMULTANEOUSLY WITH 5 SEC DELAY
INPUT 3 DO NOT ENABLE PIN 13
unsigned long timerStart, timerEnd = 5000;
bool sensorVal= true, previousSensorVal = true;
void setup() {
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
void loop()
{
sensorVal = digitalRead(2);
if (sensorVal != previousSensorVal)
{ // same as (sensorVal == HIGH)
previousSensorVal = sensorVal;
timerStart = millis();
}
if(sensorVal)
{if(millis() - timerStart > timerEnd)
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
}
else
{if(millis() - timerStart > timerEnd)
digitalWrite(12, LOW);
digitalWrite(11, HIGH);
}
sensorVal = digitalRead(3);
if (sensorVal != previousSensorVal)
{ // same as (sensorVal == HIGH)
previousSensorVal = sensorVal;
timerStart = millis();
}
if(sensorVal)
{if(millis() - timerStart > timerEnd)
digitalWrite(13, LOW);
}
else
{if(millis() - timerStart > timerEnd)
digitalWrite(13, HIGH);
}
}
MarkT
June 6, 2017, 7:13pm
9
You have two separate pins, each needs its own state variables:
Use an array for this sort of common code:
byte sensorPins[] = { 2, 3 };
bool sensorValue [2] ;
bool previousSensorValue [2];
unsigned long timerStart[2] ;
void loop()
{
for (byte i = 0 ; i < 2 ; i++)
{
sensorValue[i] = digitalRead (sensorPin [i]) ;
if (sensorValue[i] != previousSensorValue[i])
{
previousSensorValue[i] = sensorValue[i] ;
timerStart [i] = millis();
}
}
if (sensorValue[0])
{
if(millis() - timerStart[0] > timerEnd)
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
}
else
{
if(millis() - timerStart[0] > timerEnd)
digitalWrite(12, LOW);
digitalWrite(11, HIGH);
}
if (sensorValue[1])
{
if(millis() - timerStart[1] > timerEnd)
digitalWrite(13, LOW);
}
else
{
if(millis() - timerStart[1] > timerEnd)
digitalWrite(13, HIGH);
}
}
Since the two sensors have a different number of output pins to control that wasn't
easy to common up so I didn't. Also you should flag when each timer is active with a
boolean as the timer for each sensor should only be active once after a change.
PS: indent your code properly if you want it to be readable, and no need TO SHOUT IN THE SUBJECT LINE
system
June 6, 2017, 7:17pm
10
Why have you started a new thread on the same topic?
Why have you ignored the advice already given?
Why are you still not using code tags?
Why are you still SHOUTING?
Robin2
June 6, 2017, 7:25pm
11
jaspalsinghh:
sketch_jun06a:38: error: 'sensorVal' does not name a type
sensorVal = digitalRead(4);
For future reference this is a problem compiling the program and not a problem uploading it. The Arduino will not try uploading a program unless it can compile it without errors.
...R
please refer to the error at the end of the sketch whilke uploading
byte sensorPins[] = { 2, 3 };
bool sensorValue [2] ;
bool previousSensorValue [2];
unsigned long timerStart[2] ;
void loop()
{
for (byte i = 0 ; i < 2 ; i++)
{
sensorValue = digitalRead (sensorPin ) ;
if (sensorValue != previousSensorValue*)*
* {*
previousSensorValue = sensorValue ;
_ timerStart = millis();
* }
}
if (sensorValue[0])
{
if(millis() - timerStart[0] > timerEnd)
digitalWrite(11, LOW);*_
* digitalWrite(12, HIGH); *
* }*
* else*
* {*
* if(millis() - timerStart[0] > timerEnd)*
* digitalWrite(12, LOW);*
* digitalWrite(11, HIGH);*
* }*
* if (sensorValue[1])*
* {*
* if(millis() - timerStart[1] > timerEnd)*
* digitalWrite(13, LOW);*
* }*
* else*
* {*
* if(millis() - timerStart[1] > timerEnd)*
* digitalWrite(13, HIGH);*
* }*
}
exit status 1
'sensorPin' was not declared in this scope
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
need this before setup()
byte sensorPin = a number from 2 to 19;
or use this
sensorValue = digitalRead (sensorPins[0] ) ; // or [1]
if you are trying to read from D2 or D3.
Robin2
June 7, 2017, 8:54pm
14
jaspalsinghh:
please refer to the error at the end of the sketch whilke uploading
You don't seem to have read Reply #10
...R
dear sir ,
i have red through #10 but did not understood please help.
i think it would be better if i explain in simple language that whati actually i want from arduino uno.
i have got two metal sensor
and four channel relay module
the signal wire of both sensors has been put to d2 and d4 . (d2 sensor# 1 and d4 sensor# 2)
and i only using three relays out of four, has been put to d11 , d12 and d13 .
functionality as per below.
when metal comes in front of sensor #1 the d11 should high other wise(in case metal not there) d12 need to be high.
when metal comes in front of sensor#2 the d13 should high other wise it need to be stay on low.
thats what i really want...
thank you sir,
in simple i would like to add one more sensor to pin #4 with same functionality for pinmode13 output.
my current sketch is given below please edit it for me thank you.
unsigned long timerStart, timerEnd = 5000;
bool sensorVal= true, previousSensorVal = true;
void setup() {
pinMode(2, INPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
}
void loop()
{
sensorVal = digitalRead(2);
if (sensorVal != previousSensorVal)
{ // same as (sensorVal == HIGH)
previousSensorVal = sensorVal;
timerStart = millis();
}
if(sensorVal)
{if(millis() - timerStart > timerEnd)
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
}
else
{if(millis() - timerStart > timerEnd)
digitalWrite(12, LOW);
digitalWrite(11, HIGH);
}
}
dear experts please help.
in simple i would like to add one more sensor to pin #4 with same functionality for pinmode13 output.
my current sketch is given below please edit it for me thank you.
unsigned long timerStart, timerEnd = 5000;
bool sensorVal= true, previousSensorVal = true;
void setup() {
pinMode(2, INPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
}
void loop()
{
sensorVal = digitalRead(2);
if (sensorVal != previousSensorVal)
{ // same as (sensorVal == HIGH)
previousSensorVal = sensorVal;
timerStart = millis();
}
if(sensorVal)
{if(millis() - timerStart > timerEnd)
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
}
else
{if(millis() - timerStart > timerEnd)
digitalWrite(12, LOW);
digitalWrite(11, HIGH);
}
}
How many versions of this same sketch are you up to now?
And you're still not used code tags
unsigned long timerStart, timerEnd = 5000;
bool sensorVal= true, previousSensorVal = true;
void setup() {
pinMode(4, INPUT);
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
}
void loop()
{
sensorVal = digitalRead(4);
if (sensorVal != previousSensorVal)
{ // same as (sensorVal == HIGH)
previousSensorVal = sensorVal;
timerStart = millis();
}
if(sensorVal)
{if(millis() - timerStart > timerEnd)
digitalWrite(13, LOW);
digitalWrite(12, HIGH);
}
else
{if(millis() - timerStart > timerEnd)
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
}
}
am sorry sir,
what does mean by code tags.
i want to use both sensor together.
likke you have removed pinmode11 from my program so how come the both sensor work out?