-
-
Save kostasprint/cb95bdf1abec52cb0106 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* http://playground.arduino.cc/Main/MaxSonar | |
Maxbotix simple test | |
Instructions: | |
- At least one of: (comment the appropriate code below) | |
* PW is digital pin 8 | |
* TX is digital pin 6 | |
* AN is analog pin A0 | |
- Change code below according to your model (LV, XL and | |
HRLV supported) | |
Note: | |
For convenience, the getRange method will always return centimeters. | |
You can use convert fuctions to convert to another unit (toInches and | |
toCentimeters are available) | |
*/ | |
#include "Maxbotix.h" | |
#define DEBUG 1 | |
#define VIBE 7 // attach Vibe motor to pin n° | |
#define VIBELENGHT 100 // | |
#define VIBEPAUSE 200 // | |
Maxbotix rangeSensorPW(8, Maxbotix::PW, Maxbotix::LV); | |
int distancePrevious; | |
void setup() | |
{ | |
pinMode(VIBE, OUTPUT); | |
Serial.begin(9600); | |
} | |
void vibe1(int repeat) | |
{ | |
// più è vicino più volte vibra | |
for(int i=0; i<repeat; i++){ | |
#ifdef DEBUG | |
Serial.print("\t\t<<\t - VIBRA 1- \t>>"); | |
#endif | |
digitalWrite(VIBE, HIGH); // turn the LED on (HIGH is the voltage level) | |
delay(VIBELENGHT); // vibe a moment | |
digitalWrite(VIBE, LOW); // turn the LED off by making the voltage LOW | |
delay(VIBEPAUSE); // wait a moment (for multiple vibes) | |
} | |
} | |
void vibe2(int frequence) | |
{ | |
// vibra con impulsi diversi | |
#ifdef DEBUG | |
Serial.print("\t\t<<\t - VIBRA2 - \t>> freq. - "); | |
Serial.print(frequence); | |
#endif | |
digitalWrite(VIBE, HIGH); // turn the LED on (HIGH is the voltage level) | |
delay(VIBELENGHT); // vibe a moment | |
digitalWrite(VIBE, LOW); // turn the LED off by making the voltage LOW | |
delay(int(VIBEPAUSE/frequence)); // wait a moment (for multiple vibes) | |
} | |
void loop() | |
{ | |
const int triggerFar = 120; | |
const int triggerBetween = 70; | |
const int triggerNear = 30; | |
int beep=0; | |
unsigned long start; | |
int distance; | |
// PW | |
start = millis(); | |
distance = int(rangeSensorPW.getRange()); // Centimeters | |
#ifdef DEBUG | |
Serial.print("Reading...\t"); | |
Serial.print("PW: "); | |
Serial.print(distance); | |
Serial.print(" - "); | |
Serial.print(distancePrevious); | |
Serial.print("cm - "); | |
Serial.print(millis() - start); | |
Serial.print("ms"); | |
#endif | |
if (distance < triggerFar){ | |
beep = 1; | |
if(distance < triggerBetween){ | |
beep = 2; | |
if (distance < triggerNear){ | |
beep = 3; | |
} | |
} | |
// vibra / suona / fai qualcosa di spettacolare: è il tuo momento !!! | |
vibe2(beep); | |
} | |
distancePrevious = distance; | |
#ifdef DEBUG | |
Serial.println(" "); | |
#endif | |
// delay(100); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment