Strobe light code help

Hello,

For command #7 I want to have a led strobe. How would I do that?

Thanks.

#include <MOVIShield.h>
#include <Servo.h>
//Pins where positive wire of LED connects. (4=Chest Armour Led 7=Eye LED 8=Shield LED)
int led1=4;
int led2=7;
int led3=8;

Servo myservo;
//Define Servo
Servo servo1; //Torso
Servo servo2; //R-Shoulder
Servo servo3; //R-Bicep
Servo servo4; //L-Shoulder
int servoPos = 0; //Servo position in degrees
int servo1Pos=90;
int servo2Pos=0;
int servo3Pos=0;
int servo4Pos=180;
MOVI recognizer (true); //Get a MOVI object, true enables serial monitor interface, rx and tx for alternate communication pins on AVR architecture boards

void setup()
{
//Define LED pins as outputs
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
//Define servo pins
servo1.attach(3); //attach servo 1 to pin 3
servo2.attach(5);//attach servo 2 to pin 5
servo3.attach(6);//attach servo 3 to pin 6
servo4.attach(9);//attach servo 4 to pin 9

recognizer.init();
recognizer.callSign(F(“Sergey”)); //Train callsign (may take 20 seconds)
recognizer.addSentence(F(“Activate display mode”)); //1 (Turns on lights)
recognizer.addSentence(F(“Activate stealth mode”)); //2 (Turns off lights)
recognizer.addSentence(F(“Shutdown”)); //3 (Turn off all LEDs and puts servos to rest position)
recognizer.addSentence(F(“At ease”)); //4 (Servos go to home postion but LEDs stay on)
recognizer.addSentence(F(“Activate Shield”)); //5 (Turns on LED for Riot Shield)
recognizer.addSentence(F(“Pose”)); //6 (SERGEY strikes a pose)
recognizer.addSentence(F(“Defensive Mode”)); //7 (Shield Strobes)
recognizer.train();

}

void loop() {
int res = recognizer.poll();

if (res == 1) {
recognizer.say(“Display mode activated”);
digitalWrite(led1, HIGH); //Turns on LED connected to pin 4
digitalWrite(led2, HIGH); //Turns on LED connected to pin 7
recognizer.ask();
}
if (res == 2) {
recognizer.say(“Stealth mode activatedn”);
//Turns off all LEDs
digitalWrite(led1, LOW); //Turns off LED connected to pin 4
digitalWrite(led2, LOW); //Turns off LED connected to pin 7
digitalWrite(led3, LOW); //Turns off LED connected to pin 8
}
if (res == 3) {
recognizer.say(“Deactivating”);
//Turns off all LEDs
digitalWrite(led1, LOW); //Turns off LED connected to pin 4
digitalWrite(led2, LOW); //Turns off LED connected to pin 7
digitalWrite(led3, LOW); //Turns off LED connected to pin 8
servo1.write(90);// set torso to home/rest position
servo2.write(0);// set R-Shoulder to home/rest position
servo3.write(0);// set R-Bicep to home/rest position
servo4.write(180);//set L-Shoulder to home/rest position
}
if (res ==4) {
recognizer.say(“Yes, commander”);
//Turns off all LEDs
digitalWrite(led1,HIGH); //Turns on LED connected to pin 4
digitalWrite(led2, HIGH); //Turns on LED connected to pin 7
digitalWrite(led3, HIGH); //Turns on LED connected to pin 8
servo1.write(90);// set torso to home/rest position
servo2.write(0);// set R-Shoulder to home/rest position
servo3.write(0);// set R-Bicep to home/rest position
servo4.write(180);//set L-Shoulder to home/rest position
}
if (res ==5) {
recognizer.say(“Sheild activated”);
digitalWrite(led3, HIGH); //Turns on Shield LED
}
if (res ==6) {
recognizer.say(“Pose initiated”);
//Test code
for (servoPos = 90; servoPos <= 90; servoPos += 1) //Goes from 90 degrees to 90 degrees
servo1.write(servoPos); //We are controlling Torso
delay(2000);// waits 2sec for the servo to reach the position
for (servoPos = 0; servoPos <= 90; servoPos += 1) //Goes from 0 degrees to 90 degrees
servo2.write(servoPos); //We are controlling R-Shoulder
delay(8000);// waits 8sec for the servo to reach the position
for (servoPos = 0; servoPos <= 90; servoPos += 1) //Goes from 0 degrees to 90 degrees
servo3.write(servoPos); //We are controlling R-Bicep
delay(10000);// waits 10sec for the servo to reach the position
for (servoPos = 180; servoPos <= 90; servoPos += 1) //Goes from 180 degrees to 90 degrees
servo4.write(servoPos); //We are controlling R-Shoulder
delay(8000);// waits 8sec for the servo to reach the position
//End of test code
}
if (res ==7) {
recognizer.say(“Get Back!”);
digitalWrite(led3, HIGH); //Turns on Shield LED
delay(500);
digitalWrite(led3, LOW);
}
}

I believe you would just have to add more digitalWrite HIGH, delay and digitalWrite LOW to your lines of code if you want to make it strobe on and off multiple times.

I use Movi on an Arduino Mega to make pins high on a second Arduino. The second Arduino is setup to make LEDs connected to it strobe when a certain pin is high. Hope this all makes sense.

1 Like