- Name:
- if pin
- Syntax:
-
Single line options:
IF pin XX ?? value {AND/OR variable ?? value ...} THEN label
IF pin XX ?? value {AND/OR variable ?? value ...} THEN GOTO label
IF pin XX ?? value {AND/OR variable ?? value ...} THEN GOSUB label
IF pin XX ?? value {AND/OR variable ?? value ...} THEN EXIT
pin XX - the number of the pin to check.
Value - is a variable/constant (usually either 0 or 1).
?? - comparison operator can be any of the following conditions:
= equal to is equal to <> not equal to != not equal to > greater than < less than Multiple line/block structured options:
IF pin XX ?? value {AND/OR pin XX ?? value ...} THEN
{code}
ELSEIF pin XX ?? value {AND/OR pin XX ?? value ...} THEN
{code}
ELSE
{code}
ENDIF
pin XX - the number of the pin to check.
Value - is a variable/constant (usually either 0 or 1).
?? - comparison operator can be any of the following conditions:
= equal to is equal to <> not equal to != not equal to > greater than < less than - Description:
-
When using inputs the input variable (pin1, pin2 etc) must be used (not the actual pin name 1, 2 etc.) i.e. the line must read 'if pin1 = 1 then...', not 'if 1 = 1 then...'
Some PICAXE parts have additional inputs on porta and portc. To read the state of PORTA and PORTC pins on the older 28X/X1 parts, they keyword PORTA or PORTC is inserted after IF to redirect the whole line to the desired port. For newer parts use the direct PORT.PIN notation instead e.g. if pinC.1 = 1 then....
When using PORTA or PORTC keywords, it is possible to use AND and OR within the command, but all pins tested will be on the same port, it is not possible to mix ports within one line.
The if...then command only checks an input at the time the command is processed. Therefore it is normal to put the if...then command within a program loop that regularly scans the input. For details on how to permanently scan for an input condition using interrupts see the 'setint' command.
To read the whole input port at once the variable 'pins' can be used if pins = %10101010 then gosub label. To read the whole input port and mask individual inputs (e.g. 6 and 7) let b1 = pins & %11000000, if b1 = %11000000 then gosub label.
The words is (=), on (1) and off (0) can also be used with younger students.
- Applies To:
- All
- See Also:
- Related Create:
Flash an LED
Flash an LED when an input goes high
- Code Example:
-
main: if pin0 = 1 then flsh ; jump to flsh if pin0 is high goto main ; else loop back to start flsh: high 1 ; switch on output 1 pause 5000 ; wait 5 seconds low 1 ; switch off output 1 goto main ; loop back to start
Copy Code Submit an Example
Exit a loop
Exit a loop when an input pin goes high
- Code Example:
-
do if pinC.0 = 1 then exit ; exit if pinC.0 is high loop
Copy Code Submit an Example
Using porta
Checking a porta input within a loop
- Code Example:
-
main: if porta pin0 = 1 then flsh ; jump to flsh if pin0 is high goto main ; else loop back to start flsh: high 1 ; switch on output 1 pause 5000 ; wait 5 seconds low 1 ; switch off output 1 goto main ; loop back to start
Copy Code Submit an Example
Gates
Model of various logic gates
- Code Example:
-
;2 input AND gate if pinC.1 = 1 and pinC.2 = 1 then gosub label ;3 input AND gate if pinC.0 =1 and pinC.1 =1 and pinC.2 = 1 then gosub label ;2 input OR gate if pinC.1 =1 or pinC.2 =1 then gosub label ;analogue value between certain values readadc 1,b1 if b1 >= 100 and b1 <= 200 then gosub label ;To read the whole input port at once the variable 'pins' can be used if pins = %10101010 then gosub label ;To read the whole input port and mask individual inputs (e.g. 6 and 7) let b1 = pins & %11000000 if b1 = %11000000 then gosub label
Copy Code Submit an Example
Submit Your Own Code!
You must be logged in to submit code examples. Login now.