include <Arduino.h>
include <Wire.h>
include <SoftwareSerial.h>
include <MeAuriga.h>
//Encoder Motor
MeEncoderOnBoard Encoder_1(SLOT1);
MeEncoderOnBoard Encoder_2(SLOT2);
void isr_process_encoder1(void)
{
if(digitalRead(Encoder_1.getPortB()) == 0){
Encoder_1.pulsePosMinus();
}else{
Encoder_1.pulsePosPlus();
}
}
void isr_process_encoder2(void)
{
if(digitalRead(Encoder_2.getPortB()) == 0){
Encoder_2.pulsePosMinus();
}else{
Encoder_2.pulsePosPlus();
}
}
void move(int direction, int speed)
{
int leftSpeed = 0;
int rightSpeed = 0;
if(direction == 1){
leftSpeed = -speed;
rightSpeed = speed;
}else if(direction == 2){
leftSpeed = speed;
rightSpeed = -speed;
}else if(direction == 3){
leftSpeed = -speed;
rightSpeed = -speed;
}else if(direction == 4){
leftSpeed = speed;
rightSpeed = speed;
}
Encoder_1.setTarPWM(leftSpeed);
Encoder_2.setTarPWM(rightSpeed);
}
void moveDegrees(int direction,long degrees, int speed_temp)
{
speed_temp = abs(speed_temp);
if(direction == 1)
{
Encoder_1.move(-degrees,(float)speed_temp);
Encoder_2.move(degrees,(float)speed_temp);
}
else if(direction == 2)
{
Encoder_1.move(degrees,(float)speed_temp);
Encoder_2.move(-degrees,(float)speed_temp);
}
else if(direction == 3)
{
Encoder_1.move(-degrees,(float)speed_temp);
Encoder_2.move(-degrees,(float)speed_temp);
}
else if(direction == 4)
{
Encoder_1.move(degrees,(float)speed_temp);
Encoder_2.move(degrees,(float)speed_temp);
}
}
double angle_rad = PI/180.0;
double angle_deg = 180.0/PI;
void controlMov(double segundosEspera);
MeUltrasonicSensor ultrasonic_10(10);
MeLightSensor lightsensor_12(12);
MeBuzzer buzzer;
void controlMov(double segundosEspera)
{
if((10) > (ultrasonic_10.distanceCm())){
move(2,100);
_delay(segundosEspera);
move(4,50);
_delay(segundosEspera);
}else{
move(1,100);
}
}
void setup(){
attachInterrupt(Encoder_1.getIntNum(), isr_process_encoder1, RISING);
attachInterrupt(Encoder_2.getIntNum(), isr_process_encoder2, RISING);
//Set Pwm 8KHz
TCCR1A = _BV(WGM10);
TCCR1B = _BV(CS11) | _BV(WGM12);
TCCR2A = _BV(WGM21) | _BV(WGM20);
TCCR2B = _BV(CS21);
buzzer.setpin(45);
}
void loop(){
if((lightsensor12.read()) < (10)){
for(int i=0;i<3;++i)
{
buzzer.tone(392, 500);
delay(20);
controlMov(1);
}
buzzer.tone(330, 250);
delay(20);
controlMov(1);
buzzer.tone(494, 125);
delay(20);
controlMov(1);
buzzer.tone(392, 500);
delay(20);
controlMov(1);
buzzer.tone(330, 250);
delay(20);
controlMov(1);
buzzer.tone(494, 125);
delay(20);
controlMov(1);
buzzer.tone(392, 1000);
delay(20);
controlMov(1);
for(int i=0;i<3;++_i)
{
buzzer.tone(587, 500);
delay(20);
controlMov(1);
}
buzzer.tone(659, 250);
delay(20);
controlMov(1);
buzzer.tone(494, 125);
delay(20);
controlMov(1);
buzzer.tone(392, 500);
delay(20);
controlMov(1);
buzzer.tone(330, 250);
delay(20);
controlMov(1);
buzzer.tone(494, 125);
delay(20);
controlMov(1);
buzzer.tone(392, 1000);
delay(20);
controlMov(1);
}else{
controlMov(1);
}
_loop();
}
void _delay(float seconds){
long endTime = millis() + seconds * 1000;
while(millis() < endTime)_loop();
}
void _loop(){
Encoder_1.loop();
Encoder_2.loop();
}
0x00 0x00
lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : Wiring
Description : Wiring
Programmer Model: AVRISP
Hardware Version: 15
Firmware Version Master : 2.10
Vtarget : 0.0 V
SCK period : 0.1 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e9801
avrdude: reading input file "C:\DOCUME~1\Pedro\CONFIG~1\Temp\build3521077687409193779.tmp/project_ESQUIVAOBSTACULOSCONSTARWARS2_0.cpp.hex"
avrdude: writing flash (14586 bytes):
Writing | ################################################## | 100% 2.27s
avrdude: 14586 bytes of flash written
avrdude: verifying flash memory against C:\DOCUME~1\Pedro\CONFIG~1\Temp\build3521077687409193779.tmp/project_ESQUIVAOBSTACULOSCONSTARWARS2_0.cpp.hex:
avrdude: load data flash data from input file C:\DOCUME~1\Pedro\CONFIG~1\Temp\build3521077687409193779.tmp/project_ESQUIVAOBSTACULOSCONSTARWARS2_0.cpp.hex:
avrdu
#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>
#include <MeAuriga.h>
//Encoder Motor
MeEncoderOnBoard Encoder_1(SLOT1);
MeEncoderOnBoard Encoder_2(SLOT2);
void isr_process_encoder1(void)
{
if(digitalRead(Encoder_1.getPortB()) == 0){
Encoder_1.pulsePosMinus();
}else{
Encoder_1.pulsePosPlus();
}
}
void isr_process_encoder2(void)
{
if(digitalRead(Encoder_2.getPortB()) == 0){
Encoder_2.pulsePosMinus();
}else{
Encoder_2.pulsePosPlus();
}
}
void move(int direction, int speed)
{
int leftSpeed = 0;
int rightSpeed = 0;
if(direction == 1){
leftSpeed = -speed;
rightSpeed = speed;
}else if(direction == 2){
leftSpeed = speed;
rightSpeed = -speed;
}else if(direction == 3){
leftSpeed = -speed;
rightSpeed = -speed;
}else if(direction == 4){
leftSpeed = speed;
rightSpeed = speed;
}
Encoder_1.setTarPWM(leftSpeed);
Encoder_2.setTarPWM(rightSpeed);
}
void moveDegrees(int direction,long degrees, int speed_temp)
{
speed_temp = abs(speed_temp);
if(direction == 1)
{
Encoder_1.move(-degrees,(float)speed_temp);
Encoder_2.move(degrees,(float)speed_temp);
}
else if(direction == 2)
{
Encoder_1.move(degrees,(float)speed_temp);
Encoder_2.move(-degrees,(float)speed_temp);
}
else if(direction == 3)
{
Encoder_1.move(-degrees,(float)speed_temp);
Encoder_2.move(-degrees,(float)speed_temp);
}
else if(direction == 4)
{
Encoder_1.move(degrees,(float)speed_temp);
Encoder_2.move(degrees,(float)speed_temp);
}
}
double angle_rad = PI/180.0;
double angle_deg = 180.0/PI;
void controlMov(double segundosEspera);
MeUltrasonicSensor ultrasonic_10(10);
MeLightSensor lightsensor_12(12);
MeBuzzer buzzer;
void controlMov(double segundosEspera)
{
if((10) > (ultrasonic_10.distanceCm())){
move(2,100);
_delay(segundosEspera);
move(4,50);
_delay(segundosEspera);
}else{
move(1,100);
}
}
void setup(){
attachInterrupt(Encoder_1.getIntNum(), isr_process_encoder1, RISING);
attachInterrupt(Encoder_2.getIntNum(), isr_process_encoder2, RISING);
//Set Pwm 8KHz
TCCR1A = _BV(WGM10);
TCCR1B = _BV(CS11) | _BV(WGM12);
TCCR2A = _BV(WGM21) | _BV(WGM20);
TCCR2B = _BV(CS21);
buzzer.setpin(45);
}
void loop(){
if((lightsensor_12.read()) < (10)){
for(int __i__=0;__i__<3;++__i__)
{
buzzer.tone(392, 500);
delay(20);
controlMov(1);
}
buzzer.tone(330, 250);
delay(20);
controlMov(1);
buzzer.tone(494, 125);
delay(20);
controlMov(1);
buzzer.tone(392, 500);
delay(20);
controlMov(1);
buzzer.tone(330, 250);
delay(20);
controlMov(1);
buzzer.tone(494, 125);
delay(20);
controlMov(1);
buzzer.tone(392, 1000);
delay(20);
controlMov(1);
for(int __i__=0;__i__<3;++__i__)
{
buzzer.tone(587, 500);
delay(20);
controlMov(1);
}
buzzer.tone(659, 250);
delay(20);
controlMov(1);
buzzer.tone(494, 125);
delay(20);
controlMov(1);
buzzer.tone(392, 500);
delay(20);
controlMov(1);
buzzer.tone(330, 250);
delay(20);
controlMov(1);
buzzer.tone(494, 125);
delay(20);
controlMov(1);
buzzer.tone(392, 1000);
delay(20);
controlMov(1);
}else{
controlMov(1);
}
_loop();
}
void _delay(float seconds){
long endTime = millis() + seconds * 1000;
while(millis() < endTime)_loop();
}
void _loop(){
Encoder_1.loop();
Encoder_2.loop();
}
0x00 0x00
lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : Wiring
Description : Wiring
Programmer Model: AVRISP
Hardware Version: 15
Firmware Version Master : 2.10
Vtarget : 0.0 V
SCK period : 0.1 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e9801
avrdude: reading input file "C:\DOCUME~1\Pedro\CONFIG~1\Temp\build3521077687409193779.tmp/project_ESQUIVAOBSTACULOSCONSTARWARS2_0.cpp.hex"
avrdude: writing flash (14586 bytes):
Writing | ################################################## | 100% 2.27s
avrdude: 14586 bytes of flash written
avrdude: verifying flash memory against C:\DOCUME~1\Pedro\CONFIG~1\Temp\build3521077687409193779.tmp/project_ESQUIVAOBSTACULOSCONSTARWARS2_0.cpp.hex:
avrdude: load data flash data from input file C:\DOCUME~1\Pedro\CONFIG~1\Temp\build3521077687409193779.tmp/project_ESQUIVAOBSTACULOSCONSTARWARS2_0.cpp.hex:
avrdu