Robotica DIY
Published © MIT

Slap Virtually with Arduino Leonardo – Fun Project

Overall we are slapping a guy virtually with Arduino Leonardo. This project is made just for fun.

IntermediateFull instructions provided1 hour483
Slap Virtually with Arduino Leonardo – Fun Project

Story

Read more

Code

Code snippet #1

Plain text
//RoboticaDIY.com
#include "Keyboard.h"
#define trigPin 13
#define echoPin 12

int frame1 = 0;
int frame2 = 0;
int frame3 = 0;
int frame4 = 0;
int frame5 = 0; 
int frame6 = 0;
int frame7 = 0;
int limit[] = {35,30,25,20,15,10,5,0};
int wait = 50;
int previous_distance;
int diff;

void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// initialize control over the keyboard:
Keyboard.begin();
}

void loop() {
long duration, distance;
digitalWrite(trigPin, LOW); 
delayMicroseconds(2); 
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); 
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;

diff = previous_distance - distance;
if (diff > 0){
if (frame1 == 0){ // frame 1
if (distance <= limit[0] && distance > limit[1]) {
frame1 = 1;
frame2 = 0;
frame3 = 0;
frame4 = 0;
frame5 = 0; 
frame6 = 0;
frame7 = 0;
previous_distance = distance;
Keyboard.write('1');
delay(wait);
}
}
if (frame2 == 0){ //frame 2
if (distance <= limit[1] && distance > limit[2]) {
frame1 = 0;
frame2 = 1;
frame3 = 0;
frame4 = 0;
frame5 = 0; 
frame6 = 0;
frame7 = 0;
previous_distance = distance;
Keyboard.write('1');
delay(wait);
}
}
if (frame3 == 0){ //frame 3
if (distance <= limit[2] && distance > limit[3]) {
frame1 = 0;
frame2 = 0;
frame3 = 1;
frame4 = 0;
frame5 = 0; 
frame6 = 0;
frame7 = 0;
previous_distance = distance;
Keyboard.write('1');
delay(wait);
}
}
if (frame4 == 0){ // frame 1
if (distance <= limit[3] && distance > limit[4]) {
frame1 = 0;
frame2 = 0;
frame3 = 0;
frame4 = 1;
frame5 = 0; 
frame6 = 0;
frame7 = 0;
previous_distance = distance;
Keyboard.write('1');
delay(wait);
}
}
if (frame5 == 0){ //frame 2
if (distance <= limit[4] && distance > limit[5]) {
frame1 = 0;
frame2 = 0;
frame3 = 0;
frame4 = 0;
frame5 = 1; 
frame6 = 0;
frame7 = 0;
previous_distance = distance;
Keyboard.write('1');
delay(wait);
}
}
if (frame6 == 0){ //frame 3
if (distance <= limit[5] && distance > limit[6]) {
frame1 = 0;
frame2 = 0;
frame3 = 0;
frame4 = 0;
frame5 = 0; 
frame6 = 1;
frame7 = 0;
previous_distance = distance;
Keyboard.write('1');
delay(wait);
}
}
if (frame7 == 0){ //frame 3
if (distance <= limit[6] && distance > limit[7]) {
frame1 = 0;
frame2 = 0;
frame3 = 0;
frame4 = 0;
frame5 = 0; 
frame6 = 0;
frame7 = 1;
previous_distance = distance;
Keyboard.write('1');
delay(wait);
}
}
}
else {

if (frame1 == 0){ // frame 1
if (distance <= limit[0] && distance > limit[1]) {
frame1 = 1;
frame2 = 0;
frame3 = 0;
frame4 = 0;
frame5 = 0; 
frame6 = 0;
frame7 = 0;
previous_distance = distance;
Keyboard.write('2');
delay(wait);
}
}
if (frame2 == 0){ //frame 2
if (distance <= limit[1] && distance > limit[2]) {
frame1 = 0;
frame2 = 1;
frame3 = 0;
frame4 = 0;
frame5 = 0; 
frame6 = 0;
frame7 = 0;
previous_distance = distance;
Keyboard.write('2');
delay(wait);
}
}
if (frame3 == 0){ //frame 3
if (distance <= limit[2] && distance > limit[3]) {
frame1 = 0;
frame2 = 0;
frame3 = 1;
frame4 = 0;
frame5 = 0; 
frame6 = 0;
frame7 = 0;
previous_distance = distance;
Keyboard.write('2');
delay(wait);
}
}
if (frame4 == 0){ // frame 1
if (distance <= limit[3] && distance > limit[4]) {
frame1 = 0;
frame2 = 0;
frame3 = 0;
frame4 = 1;
frame5 = 0; 
frame6 = 0;
frame7 = 0;
previous_distance = distance;
Keyboard.write('2');
delay(wait);
}
}
if (frame5 == 0){ //frame 2
if (distance <= limit[4] && distance > limit[5]) {
frame1 = 0;
frame2 = 0;
frame3 = 0;
frame4 = 0;
frame5 = 1; 
frame6 = 0;
frame7 = 0;
previous_distance = distance;
Keyboard.write('2');
delay(wait);
}
}
if (frame6 == 0){ //frame 3
if (distance <= limit[5] && distance > limit[6]) {
frame1 = 0;
frame2 = 0;
frame3 = 0;
frame4 = 0;
frame5 = 0; 
frame6 = 1;
frame7 = 0;
previous_distance = distance;
Keyboard.write('2');
delay(wait);
}
}
if (frame7 == 0){ //frame 3
if (distance <= limit[6] && distance > limit[7]) {
frame1 = 0;
frame2 = 0;
frame3 = 0;
frame4 = 0;
frame5 = 0; 
frame6 = 0;
frame7 = 1;
previous_distance = distance;
Keyboard.write('2');
delay(wait);
}
}
}
}

Code snippet #2

Plain text
int frame1 = 0;
int frame2 = 0;
int frame3 = 0;
int frame4 = 0;
int frame5 = 0;
int frame6 = 0;
int frame7 = 0;

Code snippet #5

Plain text
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;

Code snippet #8

Plain text
if (frame1 == 0){ // frame 1
if (distance <= limit[0] && distance > limit[1]) {
frame1 = 1;
frame2 = 0;
frame3 = 0;
frame4 = 0;
frame5 = 0;
frame6 = 0;
frame7 = 0;
previous_distance = distance;
Keyboard.write('1');
delay(wait);
}
}

Credits

Robotica DIY

Robotica DIY

16 projects • 18 followers
Robotica DIY is for those who want to learn themselves. You will get projects on Arduino, Raspberry pi & NodeMcu ESP8266.

Comments