# Code Error--Exclamation point

**URL:** <https://forum.arduino.cc/t/code-error-exclamation-point/38470>\
**Category:** Interfacing\
**Created:** [March 13, 2008, 1:29am UTC](https://forum.arduino.cc/t/code-error-exclamation-point/38470 "2008-03-13T01:29:03Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![system](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/system/32/1140315_2.png) [@system](https://forum.arduino.cc/u/system)\
**Post date:** [March 13, 2008, 1:29am UTC](https://forum.arduino.cc/t/code-error-exclamation-point/38470/1 "2008-03-13T01:29:03Z")

</div>

I am using Jonah Model's code to read the switch state of a push button switch in my Flash/Arduino LED tester interface.

I get an error on the following line of code:

if (switchState ! lastSwitchState) {

The error reads

In function 'void loop()':  
error: expected `)' before '!' token

I am not sure what function the exclamation point has in this script. Does anyone have any suggestions for what I might swap for the exclamation point? When I change it to an equals sign, there is no code error, but the push button is not being recognized AT ALL by Flash or my Processing Serial Proxy.

Thanks---v

The entire Arduino code is as follows:

/\* ------------------------------------------------

- Flash + Arduino LED Tester
- by Jonah Model [jmodel@parsaons.edu](mailto:jmodel@parsaons.edu)
- modified from ARDUINO CONVERSATION, by beltran berrocal, [b@progetto25zero1.com](mailto:b@progetto25zero1.com)
- ------------------------------------------------ \*/  
int inputInt ; // The incoming serial data is received as an integer  
int switchState = 0; // What is the current switch state?  
int lastSwitchState = 0; // Was the switch previously on, or off?  
int switchPin = 13; // Which digital i/o pin is setup for the switch?  
int potPin = 0; // Which analog pin gets the input from the potentiometer  
int currentPotVal = 0; // What is the current value from the potentiometer  
int lastPotVal = 0; // What was the last value from the potentiometer  
int counter = 0; // Counter for pinging serial port outbound  
//  
//-------------------------------------------------------------------------  
// SETUP  
//-------------------------------------------------------------------------  
void setup() {  
Serial.begin(19200); //setup serial conversation at 19200 baud  
pinMode(switchPin, INPUT); // sets the switch pin as input  
for (int i=0; i\<12; i++) {  
pinMode(i, OUTPUT); // set all non-input pins to output  
digitalWrite(i,LOW);  
}  
Serial.println("ready");  
Serial.println(switchState);  
}  
//  
//-------------------------------------------------------------------------  
// LOOP  
//-------------------------------------------------------------------------  
void loop () {  
//-------------------------------------------------------------------------  
// Ping now and then  
//-------------------------------------------------------------------------  
if (counter == 5000) {  
Serial.println("ready");  
counter = 0;  
}  
counter ++ ;  
//------------------------------------------------------------------------ LED LOGIC  
// Get the number of bytes (characters) available for reading over the serial port.  
// Serial.available() will be greater than 0 if any data has come in.  
// (The serial buffer can hold up to 64 bytes)  
if(Serial.available() \> 0) {  
//must be a request to light up an LED  
//inputInt should be a number 2-9, but in binary it will come in as 50-57  
inputInt = Serial.read();  
//  
if(inputInt \> 50 && inputInt \<= 57) {  
//a valid LED signal has been received from Flash  
// convert the byte to an int - getting ready for digitalWrite()  
int outputPort = inputInt-48;  
// Send back the number received as confirmation  
// IMPORTANT NOTE: Use Serial.println(), NOT Serial.print()  
Serial.println(outputPort);  
if(outputPort \>= 2 && outputPort \<= 9) {  
// turns all the LEDs OFF  
for (int i=2; i\<10; i++) {  
digitalWrite(i,LOW);  
}  
// then turns your selected LED ON  
digitalWrite(outputPort, HIGH);  
}  
// when we're done, default the inputInt to nothing  
inputInt = 0;  
}  
//-------------------------------------------------------BINARY LEDS  
// ON  
if(inputInt == 65) {digitalWrite(2, HIGH);}  
if(inputInt == 66) {digitalWrite(3, HIGH);}  
if(inputInt == 67) {digitalWrite(4, HIGH);}  
if(inputInt == 68) {digitalWrite(5, HIGH);}  
if(inputInt == 69) {digitalWrite(6, HIGH);}  
if(inputInt == 70) {digitalWrite(7, HIGH);}  
if(inputInt == 71) {digitalWrite(8, HIGH);}  
if(inputInt == 72) {digitalWrite(9, HIGH);}  
// OFF  
if(inputInt == 97) {digitalWrite(2, LOW);}  
if(inputInt == 98) {digitalWrite(3, LOW);}  
if(inputInt == 99) {digitalWrite(4, LOW);}  
if(inputInt == 100) {digitalWrite(5, LOW);}  
if(inputInt == 101) {digitalWrite(6, LOW);}  
if(inputInt == 102) {digitalWrite(7, LOW);}  
if(inputInt == 103) {digitalWrite(8, LOW);}  
if(inputInt == 104) {digitalWrite(9, LOW);}  
}  
//------------------------------------------------------------------------ SWITCH LOGIC  
// get the current state of the switch from our board  
switchState = digitalRead(switchPin);  
// if the switch has changed states, then let Flash know about it  
if (switchState ! lastSwitchState) {  
if (switchState == 1){  
Serial.println("switchOff");  
}  
else if (switchState == 0){  
Serial.println("switchOn");  
}  
}  
//// now store the state for later comparison  
lastSwitchState = switchState;  
//slows down the visualization: each sentence will be emitted every .5 seconds  
// delay(50);  
//------------------------------------------------------------------------ ANALOG POT LOGIC  
currentPotVal = analogRead(potPin);  
if (currentPotVal \< (lastPotVal + 5) && currentPotVal \> (lastPotVal - 5) ) {  
Serial.print("potValue");  
Se

---

<div class="post-metadata">

**Author:** ![system](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/system/32/1140315_2.png) [@system](https://forum.arduino.cc/u/system)\
**Post date:** [March 13, 2008, 2:03am UTC](https://forum.arduino.cc/t/code-error-exclamation-point/38470/2 "2008-03-13T02:03:30Z")

</div>

I think it should be != (not equals, that is).

---

<div class="post-metadata">

**Author:** ![system](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/system/32/1140315_2.png) [@system](https://forum.arduino.cc/u/system)\
**Post date:** [March 13, 2008, 10:39am UTC](https://forum.arduino.cc/t/code-error-exclamation-point/38470/3 "2008-03-13T10:39:48Z")

</div>

I think you are right.

Along these lines:

My Flash LED Model---Processing Serial Code----Arduino TRIO is finally working!

---

<div class="post-metadata">

**Author:** ![system](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/system/32/1140315_2.png) [@system](https://forum.arduino.cc/u/system)\
**Post date:** [May 6, 2021, 7:55pm UTC](https://forum.arduino.cc/t/code-error-exclamation-point/38470/4 "2021-05-06T19:55:34Z")

</div>


