LilyPad Vibe Board Hookup Guide
Using a Button to Trigger Feedback
Copy the code below and paste it into your Arduino IDE. Select your board (i.e. LilyPad Arduino USB for the LilyPad USB, LilyPad USB Plus for the LilyPad USB Plus, etc.) and COM port. Finally, click the upload button to upload the demo on your Arduino.
/* LilyPad Vibe Board: Button Feedback Written by: Ho Yun "Bobby" Chan @ SparkFun Electronics Date: 1/14/2019 https://www.sparkfun.com/products/11008 The main code checks for a button press. If there is a button press, the Arduino turns on the LilyPad Vibe Board for haptic feedback. For a visual cue, the LED will turn on too. If not, the LED and motor will remain off. */ const int motorPin = 10; // motor connected to PWM pin 9 const int button1Pin = A4; // pushbutton 1 pin const int ledPin = 13; // LED pin int button1State; //check state of button press void setup() { //Serial.begin(9600); //setup serial monitor, uncomment Serial.print()'s to debug //Serial.println("Begin LilyPad Vibe Motor Tests"); pinMode(button1Pin, INPUT_PULLUP);//set internal pull up for button pinMode(ledPin, OUTPUT); //visual feedback //Quick Test 1: Check If LED and Motor Can Turn On //Serial.println("Turn LilyPad Vibe Motor And LED ON"); //digitalWrite(ledPin, HIGH); // turn the LED on analogWrite(motorPin, 255); //turn motor delay(300); //Serial.println("Turn LilyPad Vibe Motor And LED OFF"); //digitalWrite(ledPin, LOW); // turn the LED off analogWrite(motorPin, 0); //turn motor off delay(300); //Quick Test 2: Check Intensity of Motor (turns on at about 130 // fade in from min to max in increments of 5 points: for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) { // sets the value (range from 0 to 255): analogWrite(motorPin, fadeValue); //Serial.print("LilyPad Vibe Motor Intensity = "); //Serial.println(fadeValue); // wait for 100 milliseconds to see motor delay(100); } // fade out from max to min in increments of 5 points: for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) { // sets the value (range from 0 to 255): analogWrite(motorPin, fadeValue); //Serial.print("LilyPad Vibe Motor Intensity = "); //Serial.println(fadeValue); // wait for 100 milliseconds to see motor delay(100); } } void loop() { // Here we'll read the current pushbutton states into // a variable: // Remember that if the button is being pressed, it will be // connected to GND. If the button is not being pressed, // the pullup resistor will connect it to Vcc. // So the state will be LOW when it is being pressed, // and HIGH when it is not being pressed. // Now we'll use those states to control the LED. // Here's what we want to do: button1State = digitalRead(button1Pin); if (button1State == LOW) // if we're pushing button 1 { //Serial.println("Button has been pressed, turn LilyPad Vibe Motor And LED ON"); digitalWrite(ledPin, HIGH); // turn the LED on analogWrite(motorPin, 255); //turn motor on delay(300); //slight delay for feedback } else { digitalWrite(ledPin, LOW); // turn the LED analogWrite(motorPin, 0); //turn motor off delay(300); } }
After uploading, you should see the built-in LED on the LilyPad Arduino and the vibe motor turn on and off. The LilyPad Arduino will then slowly increase and decrease in intensity. The vibe motor will turn on when the Arduino's PWM output is around 130
. Once we start looping in the loop()
function, the LilyPad Arduino will check to see if there is a button press. If the button is pressed (i.e. or when A4 is connected to ground), the built-in LED and vibe motor will turn on. There is a slightly longer delay after this happens so there is enough time to detect when the motor is turned on as feedback. If there is no button press, both will remain off.