mirror of
https://gitlab.dit.htwk-leipzig.de/phillip.kuehne/dezibot.git
synced 2025-05-19 11:01:46 +02:00
added examples to determine direction of light and basic find a friend (wip: needs additional movement functions)
This commit is contained in:
parent
8cb33e3096
commit
1af07ecd91
8
example/FindAFriend/FindAFriend/.theia/launch.json
Normal file
8
example/FindAFriend/FindAFriend/.theia/launch.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
// Use IntelliSense to learn about possible attributes.
|
||||||
|
// Hover to view descriptions of existing attributes.
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
|
||||||
|
]
|
||||||
|
}
|
48
example/FindAFriend/FindAFriend/FindAFriend.ino
Normal file
48
example/FindAFriend/FindAFriend/FindAFriend.ino
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
#include "Dezibot.h"
|
||||||
|
|
||||||
|
Dezibot dezibot = Dezibot();
|
||||||
|
const int centeredThreshold = 100;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
// put your setup code here, to run once:
|
||||||
|
dezibot.begin();
|
||||||
|
Serial.begin(115200);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
int32_t leftValue = (int32_t)dezibot.lightDetection.getAverageValue(IR_LEFT, 20, 1);
|
||||||
|
int32_t rightValue = (int32_t)dezibot.lightDetection.getAverageValue(IR_RIGHT, 20, 1);
|
||||||
|
switch(dezibot.lightDetection.getBrightest(IR)){
|
||||||
|
case IR_FRONT:
|
||||||
|
//correct Stearing to be centered
|
||||||
|
if( abs(leftValue-rightValue)
|
||||||
|
< centeredThreshold){
|
||||||
|
dezibot.motion.move(1);
|
||||||
|
}else{
|
||||||
|
if (leftValue > rightValue){
|
||||||
|
dezibot.motion.rotateAnticlockwise(1);
|
||||||
|
} else{
|
||||||
|
dezibot.motion.rotateClockwise(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dezibot.multiColorLight.setTopLeds(BLUE);
|
||||||
|
break;
|
||||||
|
case IR_LEFT:
|
||||||
|
dezibot.motion.rotateAnticlockwise(1);
|
||||||
|
dezibot.multiColorLight.setTopLeds(RED);
|
||||||
|
break;
|
||||||
|
case IR_RIGHT:
|
||||||
|
dezibot.motion.rotateClockwise(1);
|
||||||
|
dezibot.multiColorLight.setTopLeds(GREEN);
|
||||||
|
break;
|
||||||
|
case IR_BACK:
|
||||||
|
if(leftValue > rightValue){
|
||||||
|
dezibot.motion.rotateAnticlockwise(1);
|
||||||
|
} else {
|
||||||
|
dezibot.motion.rotateClockwise(1);
|
||||||
|
}
|
||||||
|
dezibot.multiColorLight.setTopLeds(YELLOW);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//delay(100);
|
||||||
|
}
|
35
example/IRDirection/IRDirection/IRDirection.ino
Normal file
35
example/IRDirection/IRDirection/IRDirection.ino
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#include "Dezibot.h"
|
||||||
|
|
||||||
|
Dezibot dezibot = Dezibot();
|
||||||
|
void setup() {
|
||||||
|
// put your setup code here, to run once:
|
||||||
|
dezibot.begin();
|
||||||
|
Serial.begin(115200);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
// put your main code here, to run repeatedly:
|
||||||
|
Serial.print("Front:");
|
||||||
|
Serial.print(dezibot.lightDetection.getAverageValue(IR_FRONT,20,1));
|
||||||
|
Serial.print(",Left:");
|
||||||
|
Serial.print(dezibot.lightDetection.getAverageValue(IR_LEFT,20,1));
|
||||||
|
Serial.print(",Right:");
|
||||||
|
Serial.print(dezibot.lightDetection.getAverageValue(IR_RIGHT,20,1));
|
||||||
|
Serial.print(",Back:");
|
||||||
|
Serial.println(dezibot.lightDetection.getAverageValue(IR_BACK,20,1));
|
||||||
|
switch(dezibot.lightDetection.getBrightest(IR)){
|
||||||
|
case IR_FRONT:
|
||||||
|
dezibot.multiColorLight.setTopLeds(BLUE);
|
||||||
|
break;
|
||||||
|
case IR_LEFT:
|
||||||
|
dezibot.multiColorLight.setTopLeds(RED);
|
||||||
|
break;
|
||||||
|
case IR_RIGHT:
|
||||||
|
dezibot.multiColorLight.setTopLeds(GREEN);
|
||||||
|
break;
|
||||||
|
case IR_BACK:
|
||||||
|
dezibot.multiColorLight.setTopLeds(YELLOW);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//delay(100);
|
||||||
|
}
|
@ -13,6 +13,6 @@ dezibot.multiColorLight.setLed(TOP_RIGHT,dezibot.multiColorLight.color(0,100,0))
|
|||||||
dezibot.multiColorLight.blink(10,0x00FF0000,BOTTOM,500);
|
dezibot.multiColorLight.blink(10,0x00FF0000,BOTTOM,500);
|
||||||
|
|
||||||
delay(1000);
|
delay(1000);
|
||||||
dezibot.multiColorLight.turnOff(ALL);
|
dezibot.multiColorLight.turnOffLed(ALL);
|
||||||
delay(1000);
|
delay(1000);
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
Dezibot dezibot = Dezibot();
|
Dezibot dezibot = Dezibot();
|
||||||
void setup() {
|
void setup() {
|
||||||
dezibot.begin();
|
dezibot.begin();
|
||||||
Serial.begin(9600);
|
Serial.begin(115200);
|
||||||
}
|
}
|
||||||
void loop() {
|
void loop() {
|
||||||
Serial.println("bla");
|
Serial.println("bla");
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
#include "Dezibot.h"
|
#include "Dezibot.h"
|
||||||
|
|
||||||
Dezibot::Dezibot():multiColorLight(){
|
Dezibot::Dezibot():multiColorLight(){};
|
||||||
|
|
||||||
void Dezibot::begin(void) {
|
void Dezibot::begin(void) {
|
||||||
infraredLight.begin();
|
infraredLight.begin();
|
||||||
@ -21,4 +21,4 @@ void Dezibot::begin(void) {
|
|||||||
multiColorLight.begin();
|
multiColorLight.begin();
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
|
||||||
|
@ -47,6 +47,7 @@ photoTransistors LightDetection::getBrightest(ptType type){
|
|||||||
};
|
};
|
||||||
|
|
||||||
uint32_t LightDetection::getAverageValue(photoTransistors sensor, uint32_t measurments, uint32_t timeBetween){
|
uint32_t LightDetection::getAverageValue(photoTransistors sensor, uint32_t measurments, uint32_t timeBetween){
|
||||||
|
|
||||||
TickType_t xLastWakeTime = xTaskGetTickCount();
|
TickType_t xLastWakeTime = xTaskGetTickCount();
|
||||||
TickType_t frequency = timeBetween / portTICK_PERIOD_MS;
|
TickType_t frequency = timeBetween / portTICK_PERIOD_MS;
|
||||||
uint64_t cumulatedResult = 0;
|
uint64_t cumulatedResult = 0;
|
||||||
@ -58,6 +59,7 @@ uint32_t LightDetection::getAverageValue(photoTransistors sensor, uint32_t measu
|
|||||||
};
|
};
|
||||||
|
|
||||||
void LightDetection::beginInfrared(void){
|
void LightDetection::beginInfrared(void){
|
||||||
|
digitalWrite(IR_PT_ENABLE,true);
|
||||||
pinMode(IR_PT_ENABLE, OUTPUT);
|
pinMode(IR_PT_ENABLE, OUTPUT);
|
||||||
pinMode(IR_PT_FRONT_ADC, INPUT);
|
pinMode(IR_PT_FRONT_ADC, INPUT);
|
||||||
pinMode(IR_PT_LEFT_ADC, INPUT);
|
pinMode(IR_PT_LEFT_ADC, INPUT);
|
||||||
@ -66,13 +68,14 @@ void LightDetection::beginInfrared(void){
|
|||||||
};
|
};
|
||||||
|
|
||||||
void LightDetection::beginDaylight(void){
|
void LightDetection::beginDaylight(void){
|
||||||
|
digitalWrite(DL_PT_ENABLE,true);
|
||||||
pinMode(DL_PT_ENABLE, OUTPUT);
|
pinMode(DL_PT_ENABLE, OUTPUT);
|
||||||
pinMode(DL_PT_BOTTOM_ADC, INPUT);
|
pinMode(DL_PT_BOTTOM_ADC, INPUT);
|
||||||
pinMode(DL_PT_FRONT_ADC, INPUT );
|
pinMode(DL_PT_FRONT_ADC, INPUT );
|
||||||
};
|
};
|
||||||
|
|
||||||
uint16_t LightDetection::readIRPT(photoTransistors sensor){
|
uint16_t LightDetection::readIRPT(photoTransistors sensor){
|
||||||
digitalWrite(IR_PT_ENABLE,HIGH);
|
//digitalWrite(IR_PT_ENABLE,HIGH);
|
||||||
uint16_t result = 0;
|
uint16_t result = 0;
|
||||||
switch (sensor)
|
switch (sensor)
|
||||||
{
|
{
|
||||||
@ -91,7 +94,7 @@ uint16_t LightDetection::readIRPT(photoTransistors sensor){
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
digitalWrite(IR_PT_ENABLE,LOW);
|
//digitalWrite(IR_PT_ENABLE,LOW);
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user