NOVA - Navigational Optimized Vehicle Arduino
NOVA is an advanced programming project for the mBot Ranger that allows for seamless navigation and diagnostics. To get the most out of NOVA, you will need the following accessories and sensors:
- Makeblock mBot LED Matrix (8x16)
- Me RGB LED
- Me Ultrasonic Sensor
- Me AudioPlayer
- Me Infrared Receiver Decode Module
- Makeblock Bluetooth Controller
Please note that the NOVA Programming only works on the mBot Ranger. You can easily import the code into the Arduino section of mBlock 5 to get started. NOVA also includes a diagnostic mode, accessible via a special combination on the Makeblock Bluetooth Controller: Right Thumb + Up + Left.
Patch Notes for NOVA Version 2.1.1:
- Removed redundant variables
- Improved diagnostic usability
- Enhanced program performance
Make sure to tune up your mBot Ranger regularly for optimal performance!
#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>
#include <MeAuriga.h>
#include <MePS2.h>
#include "src/MeAudioPlayer.h"
MeLightSensor lightsensor_12(12);
MeBuzzer buzzer;
MeLEDMatrix ledMtx_6(6);
unsigned char drawBuffer[16];
unsigned char *drawTemp;
MeDCMotor motor_1(1);
MeRGBLed rgbled_0(0, 12);
MeEncoderOnBoard Encoder_1(SLOT1);
MeEncoderOnBoard Encoder_2(SLOT2);
MeRGBLed rgbled_7(7, 4);
MeUltrasonicSensor ultrasonic_8(8);
MeRGBLed rgbled_6(6, 4);
MeInfraredReceiver ir_10(10);
MeAudioPlayer meAudioPlayer(0);
float inNOVADiag = 0;
MePS2 MePS2(PORT_16);
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 _delay(float seconds) {
if(seconds < 0.0){
seconds = 0.0;
}
long endTime = millis() + seconds * 1000;
while(millis() < endTime) _loop();
}
void setup() {
randomSeed((unsigned long)(lightsensor_12.read() * 123456));
buzzer.setpin(45);
ledMtx_6.setColorIndex(1);
ledMtx_6.setBrightness(6);
rgbled_0.setpin(44);
rgbled_0.fillPixelsBak(0, 2, 1);
MePS2.begin(115200);
TCCR1A = _BV(WGM10);
TCCR1B = _BV(CS11) | _BV(WGM12);
TCCR2A = _BV(WGM21) | _BV(WGM20);
TCCR2B = _BV(CS21);
attachInterrupt(Encoder_1.getIntNum(), isr_process_encoder1, RISING);
attachInterrupt(Encoder_2.getIntNum(), isr_process_encoder2, RISING);
rgbled_7.fillPixelsBak(0, 2, 1);
rgbled_6.fillPixelsBak(0, 2, 1);
ir_10.begin();
meAudioPlayer.PlayerInit();
_delay(0.1);
Encoder_1.setPulse(9);
Encoder_1.setRatio(39.267);
Encoder_1.setPosPid(1.8,0,1.2);
Encoder_1.setSpeedPid(0.18,0,0);
Encoder_2.setPulse(9);
Encoder_2.setRatio(39.267);
Encoder_2.setPosPid(1.8,0,1.2);
Encoder_2.setSpeedPid(0.18,0,0);
buzzer.tone(3520, 0.1 * 1000);
_delay(0.02);
drawTemp = new unsigned char[16]{28,16,28,0,28,20,28,0,16,8,4,24,0,28,40,28};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(5);
buzzer.tone(3520, 0.1 * 1000);
_delay(0.02);
motor_1.run(1*100/100.0*255);
for(int count=0;count<20;count++){
drawTemp = new unsigned char[16]{0,0,0,0,0,0,60,60,60,56,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,60,60,56,60,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,60,56,60,60,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,56,60,60,60,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,52,60,60,60,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,44,60,60,60,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,28,60,60,60,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,60,28,60,60,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,60,60,28,60,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,60,60,60,28,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,60,60,60,44,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,60,60,60,52,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
}
inNOVADiag = 0;
motor_1.run(1*0/100.0*255);
drawTemp = new unsigned char[16]{0,0,0,0,0,0,60,60,60,60,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,5,0,0,60,60,60,36,0,0,2,128,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,128,0,16,1,0,20,44,60,36,0,0,0,8,128,1};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{2,0,0,40,2,0,64,36,56,36,0,2,0,64,18,1};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,144,0,4,0,32,1,0,0,1,16,0,0,10,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,32,4,0,0,8,0,1,0,0,0,1,0,16,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,32,2,4,0,0,0,0,0,0,0,0,2,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,1,2,0,0,0,0,0,0,0,1,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
rgbled_0.setColor(0,0,0,0);
rgbled_0.show();
while(1) {
if(inNOVADiag == 0.000000){
if(MePS2.MeAnalog(6) > 0){
move(4, 100 / 100.0 * 255);
_delay(0.1);
move(4, 0);
}
if(MePS2.MeAnalog(6) < 0){
move(3, 100 / 100.0 * 255);
_delay(0.1);
move(3, 0);
}
if(MePS2.MeAnalog(4) > 0){
move(1, 100 / 100.0 * 255);
_delay(0.1);
move(1, 0);
}
if(MePS2.MeAnalog(4) < 0){
move(2, 100 / 100.0 * 255);
_delay(0.1);
move(2, 0);
}
if(MePS2.ButtonPressed(1)){
while(!(MePS2.ButtonPressed(1)))
{
_loop();
rgbled_7.setColor(3, 238,255,0);
rgbled_7.show();
_delay(0.25);
rgbled_7.setColor(3, 0, 0, 0);
rgbled_7.show();
_delay(0.25);
}
}
if(MePS2.ButtonPressed(5)){
while(!(MePS2.ButtonPressed(5)))
{
_loop();
rgbled_7.setColor(1, 238,255,0);
rgbled_7.show();
_delay(0.25);
rgbled_7.setColor(1, 0, 0, 0);
rgbled_7.show();
_delay(0.25);
}
}
if(MePS2.ButtonPressed(9)){
drawTemp = new unsigned char[16]{64,160,64,0,0,0,0,0,0,0,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
rgbled_7.setColor(0, 255,255,255);
rgbled_7.show();
}
if(MePS2.ButtonPressed(18)){
motor_1.run(1*0/100.0*255);
drawTemp = new unsigned char[16]{64,160,78,17,17,14,0,31,20,16,0,31,20,16,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
rgbled_7.setColor(0, 0,0,0);
rgbled_7.show();
_delay(1);
ledMtx_6.clearScreen();
}
if(MePS2.ButtonPressed(12)){
drawTemp = new unsigned char[16]{96,144,144,96,0,0,0,0,0,0,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
rgbled_0.setColor(0,255,255,255);
rgbled_0.show();
}
if(MePS2.ButtonPressed(13)){
drawTemp = new unsigned char[16]{96,144,144,96,28,34,34,28,0,62,40,32,0,62,40,32};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
rgbled_0.setColor(0,0,0,0);
rgbled_0.show();
_delay(1);
ledMtx_6.clearScreen();
}
if(MePS2.ButtonPressed(10)){
drawTemp = new unsigned char[16]{127,80,32,0,7,4,4,0,7,5,7,0,5,2,5,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(1);
while(!(MePS2.ButtonPressed(18)))
{
_loop();
if(ultrasonic_8.distanceCm() < 25){
move(4, 50 / 100.0 * 255);
_delay(1);
move(4, 0);
}else{
move(1, 60 / 100.0 * 255);
ledMtx_6.showNum(ultrasonic_8.distanceCm(), 3);
}
}
Encoder_1.setTarPWM(0);
Encoder_2.setTarPWM(0);
_delay(0.5);
ledMtx_6.drawStr(0, 0 + 7, String("off").c_str());
_delay(1);
ledMtx_6.clearScreen();
}
if(MePS2.ButtonPressed(3)){
drawTemp = new unsigned char[16]{0,0,8,12,10,10,10,12,18,33,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
rgbled_0.setColor(0,238,255,0);
rgbled_0.show();
buzzer.tone(880, 0.25 * 1000);
_delay(0.02);
rgbled_0.setColor(0,0,0,0);
rgbled_0.show();
ledMtx_6.clearScreen();
}
if(MePS2.ButtonPressed(7)){
drawTemp = new unsigned char[16]{0,0,1,3,5,9,17,33,91,33,17,9,5,3,1,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
rgbled_0.setColor(0,255,0,0);
rgbled_0.show();
rgbled_6.setColor(0, 255,0,0);
rgbled_6.show();
_delay(1);
while(!(MePS2.ButtonPressed(7)))
{
_loop();
buzzer.tone(3951, 0.5 * 1000);
_delay(0.02);
buzzer.tone(3520, 0.5 * 1000);
_delay(0.02);
}
_delay(1);
rgbled_0.setColor(0,0,0,0);
rgbled_0.show();
rgbled_6.setColor(0, 0,0,0);
rgbled_6.show();
ledMtx_6.clearScreen();
}
if(MePS2.ButtonPressed(11)){
buzzer.tone(494, 0.5 * 1000);
_delay(0.02);
buzzer.tone(494, 0.5 * 1000);
_delay(0.02);
buzzer.tone(523, 0.5 * 1000);
_delay(0.02);
buzzer.tone(587, 0.5 * 1000);
_delay(0.02);
buzzer.tone(587, 0.5 * 1000);
_delay(0.02);
buzzer.tone(523, 0.5 * 1000);
_delay(0.02);
buzzer.tone(494, 0.5 * 1000);
_delay(0.02);
buzzer.tone(440, 0.5 * 1000);
_delay(0.02);
buzzer.tone(392, 0.5 * 1000);
_delay(0.02);
buzzer.tone(392, 0.5 * 1000);
_delay(0.02);
buzzer.tone(440, 0.5 * 1000);
_delay(0.02);
buzzer.tone(494, 0.5 * 1000);
_delay(0.02);
buzzer.tone(494, 0.65 * 1000);
_delay(0.02);
buzzer.tone(440, 0.25 * 1000);
_delay(0.02);
buzzer.tone(440, 1 * 1000);
_delay(0.02);
buzzer.tone(494, 0.5 * 1000);
_delay(0.02);
buzzer.tone(494, 0.5 * 1000);
_delay(0.02);
buzzer.tone(523, 0.5 * 1000);
_delay(0.02);
buzzer.tone(587, 0.5 * 1000);
_delay(0.02);
buzzer.tone(587, 0.5 * 1000);
_delay(0.02);
buzzer.tone(523, 0.5 * 1000);
_delay(0.02);
buzzer.tone(494, 0.5 * 1000);
_delay(0.02);
buzzer.tone(440, 0.5 * 1000);
_delay(0.02);
buzzer.tone(392, 0.5 * 1000);
_delay(0.02);
buzzer.tone(392, 0.5 * 1000);
_delay(0.02);
buzzer.tone(440, 0.5 * 1000);
_delay(0.02);
buzzer.tone(494, 0.5 * 1000);
_delay(0.02);
buzzer.tone(440, 0.65 * 1000);
_delay(0.02);
buzzer.tone(392, 0.25 * 1000);
_delay(0.02);
buzzer.tone(392, 1 * 1000);
_delay(0.02);
buzzer.tone(440, 0.5 * 1000);
_delay(0.02);
buzzer.tone(440, 0.5 * 1000);
_delay(0.02);
buzzer.tone(494, 0.5 * 1000);
_delay(0.02);
buzzer.tone(392, 0.5 * 1000);
_delay(0.02);
buzzer.tone(440, 0.5 * 1000);
_delay(0.02);
buzzer.tone(494, 0.25 * 1000);
_delay(0.02);
buzzer.tone(523, 0.25 * 1000);
_delay(0.02);
buzzer.tone(494, 0.5 * 1000);
_delay(0.02);
buzzer.tone(392, 0.5 * 1000);
_delay(0.02);
buzzer.tone(440, 0.5 * 1000);
_delay(0.02);
buzzer.tone(494, 0.25 * 1000);
_delay(0.02);
buzzer.tone(523, 0.25 * 1000);
_delay(0.02);
buzzer.tone(494, 0.5 * 1000);
_delay(0.02);
buzzer.tone(440, 0.5 * 1000);
_delay(0.02);
buzzer.tone(392, 0.5 * 1000);
_delay(0.02);
buzzer.tone(440, 0.5 * 1000);
_delay(0.02);
buzzer.tone(147, 1 * 1000);
_delay(0.02);
buzzer.tone(494, 0.5 * 1000);
_delay(0.02);
buzzer.tone(494, 0.5 * 1000);
_delay(0.02);
buzzer.tone(523, 0.5 * 1000);
_delay(0.02);
buzzer.tone(587, 0.5 * 1000);
_delay(0.02);
buzzer.tone(587, 0.5 * 1000);
_delay(0.02);
buzzer.tone(523, 0.5 * 1000);
_delay(0.02);
buzzer.tone(494, 0.5 * 1000);
_delay(0.02);
buzzer.tone(440, 0.5 * 1000);
_delay(0.02);
buzzer.tone(392, 0.5 * 1000);
_delay(0.02);
buzzer.tone(392, 0.5 * 1000);
_delay(0.02);
buzzer.tone(440, 0.5 * 1000);
_delay(0.02);
buzzer.tone(494, 0.5 * 1000);
_delay(0.02);
buzzer.tone(440, 0.65 * 1000);
_delay(0.02);
buzzer.tone(392, 0.25 * 1000);
_delay(0.02);
buzzer.tone(392, 1 * 1000);
_delay(0.02);
move(4, 100 / 100.0 * 255);
_delay(3);
move(4, 0);
}
if(ir_10.getCode() == 177.000000){
rgbled_0.setColor(0,255,0,0);
rgbled_0.show();
drawTemp = new unsigned char[16]{0,0,0,0,0,60,98,82,74,70,60,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
buzzer.tone(3951, 0.25 * 1000);
_delay(0.02);
buzzer.tone(3951, 0.25 * 1000);
_delay(0.02);
buzzer.tone(3951, 0.25 * 1000);
_delay(0.02);
}
if(ir_10.getCode() == 277.000000){
meAudioPlayer.playMusicFileName(String("Rescued"));
_delay(0.1);
drawTemp = new unsigned char[16]{0,0,0,0,0,60,98,82,74,70,60,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(6);
ledMtx_6.clearScreen();
}
if(MePS2.ButtonPressed(20)){
meAudioPlayer.setMusicPlayMode(0);
_delay(0.1);
meAudioPlayer.setMusicVolume(100);
_delay(0.1);
while(!(ir_10.getCode() == 69.000000))
{
_loop();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,60,60,60,56,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,60,60,56,60,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,60,56,60,60,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,56,60,60,60,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,52,60,60,60,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,44,60,60,60,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,28,60,60,60,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,60,28,60,60,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,60,60,28,60,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,60,60,60,28,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,60,60,60,44,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,0,0,0,0,0,60,60,60,52,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.1);
ledMtx_6.clearScreen();
}
meAudioPlayer.playMusicFileName(String("Around The World"));
_delay(0.1);
}
if((MePS2.ButtonPressed(21)) && ((MePS2.ButtonPressed(16)) && (MePS2.ButtonPressed(14)))){
_delay(1);
inNOVADiag += 1;
for(int count9=0;count9<2;count9++){
drawTemp = new unsigned char[16]{28,16,28,0,28,20,28,0,16,8,4,24,0,28,40,28};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(1);
drawTemp = new unsigned char[16]{124,68,40,16,0,124,0,60,80,60,0,56,68,84,84,8};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(1);
}
}
}
if(inNOVADiag == 1.000000){
while(!(inNOVADiag == 0.000000))
{
_loop();
if(MePS2.ButtonPressed(18)){
for(int count13=0;count13<2;count13++){
drawTemp = new unsigned char[16]{127,73,73,65,0,5,2,5,0,47,0,0,16,127,16,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{124,68,40,16,0,124,0,60,80,60,0,56,68,84,84,8};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(1);
ledMtx_6.clearScreen();
}
inNOVADiag = 0;
}
if(MePS2.ButtonPressed(9)){
for(int count14=0;count14<2;count14++){
drawTemp = new unsigned char[16]{127,80,32,15,8,8,0,6,9,9,6,0,9,6,6,9};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{64,126,64,0,126,82,66,0,34,82,76,0,64,126,64,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(1);
ledMtx_6.clearScreen();
}
while(!(MePS2.ButtonPressed(9)))
{
_loop();
drawTemp = new unsigned char[16]{62,40,16,6,4,4,0,62,42,34,0,62,42,34,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,18,42,42,36,0,0,34,126,2,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(1);
ledMtx_6.clearScreen();
}
while(!(ultrasonic_8.distanceCm() < 15))
{
_loop();
move(1, 50 / 100.0 * 255);
}
Encoder_1.setTarPWM(0);
Encoder_2.setTarPWM(0);
_delay(0.5);
drawTemp = new unsigned char[16]{0,8,4,8,16,32,8,4,8,16,32,8,4,8,16,32};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{124,68,40,16,0,124,0,60,80,60,0,56,68,84,84,8};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
}
if(MePS2.ButtonPressed(12)){
drawTemp = new unsigned char[16]{0,60,32,60,32,60,0,60,36,60,0,32,60,32,4,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
move(1, 50 / 100.0 * 255);
_delay(1);
move(1, 0);
move(2, 50 / 100.0 * 255);
_delay(1);
move(2, 0);
move(3, 50 / 100.0 * 255);
_delay(1);
move(3, 0);
move(4, 50 / 100.0 * 255);
_delay(1);
move(4, 0);
drawTemp = new unsigned char[16]{0,126,74,74,66,0,14,8,14,0,14,10,10,0,2,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
Encoder_1.move(-1*1000,abs(180));
_delay(5);
Encoder_1.move(1*1000,abs(180));
_delay(5);
Encoder_2.move(-1*1000,abs(180));
_delay(5);
Encoder_2.move(1*1000,abs(180));
_delay(5);
drawTemp = new unsigned char[16]{124,68,40,16,0,124,0,60,80,60,0,56,68,84,84,8};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
}
if(MePS2.ButtonPressed(10)){
for(int count15=0;count15<2;count15++){
drawTemp = new unsigned char[16]{36,84,84,24,0,56,68,68,56,0,120,4,4,120,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.5);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,14,8,14,0,14,10,62,0,0,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(0.5);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{64,126,64,0,126,82,66,0,34,82,76,0,64,126,64,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(1);
ledMtx_6.clearScreen();
}
meAudioPlayer.setMusicPlayMode(0);
_delay(0.1);
meAudioPlayer.setMusicVolume(100);
_delay(0.1);
meAudioPlayer.playMusicFileName(String("T001"));
_delay(0.1);
while(!(MePS2.ButtonPressed(9)))
{
_loop();
drawTemp = new unsigned char[16]{60,66,66,66,60,0,126,24,36,0,72,85,36,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{62,40,16,6,4,4,0,62,42,34,0,62,42,34,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(1);
ledMtx_6.clearScreen();
drawTemp = new unsigned char[16]{0,18,42,42,36,0,0,34,126,2,0,0,0,0,0,0};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(1);
ledMtx_6.clearScreen();
}
meAudioPlayer.stopMusic();
_delay(0.1);
drawTemp = new unsigned char[16]{124,68,40,16,0,124,0,60,80,60,0,56,68,84,84,8};
memcpy(drawBuffer, drawTemp, 16);
free(drawTemp);
ledMtx_6.drawBitmap(0, 0, 16, drawBuffer);
_delay(1);
}
}
}
_loop();
}
}
void _loop() {
MePS2.loop();
Encoder_1.loop();
Encoder_2.loop();
ir_10.loop();
}
void loop() {
_loop();
}