diff --git a/Code/miniRobot/miniRobot.ino b/Code/miniRobot/miniRobot.ino index 237239d..452f374 100644 --- a/Code/miniRobot/miniRobot.ino +++ b/Code/miniRobot/miniRobot.ino @@ -12,9 +12,9 @@ RF24 radio(A0, 3); // CE, CSN byte commands[32]; //byte 0 = command -long timer; +unsigned long timer; int16_t temperature = 0; -int16_t distance = 0; +uint16_t distance = 50; void inline clearCommands() { for(uint8_t i=0; i<32; i++) { @@ -70,30 +70,36 @@ void setup() { // motorB.setPWM16(2,RESOLUTION); radio.begin(); radio.openWritingPipe(address2); - radio.openReadingPipe(0, address); + radio.openReadingPipe(1, address); radio.setPALevel(RF24_PA_MAX); radio.startListening(); clearCommands(); //Temperatur- und Abstandsmessung - setEchoPins(16, 6); //16: A2, 5: D5 + setEchoPins(16, 6); //16: A2, 6: D6 tempDistSetup(); timer = millis(); } void loop() { //Temperatur- und Abstandsmessung - Serial.println(temperature); - Serial.println(distance); - temperature = dallas(4, 0); + //Serial.println(temperature); + //Serial.println(distance); - if((unsigned long)(millis() - timer) >= 100){ + + unsigned long currentMillis = millis(); + + if((unsigned long)(currentMillis - timer) >= 100){ + temperature = dallas(4, 0); measureDistance(); - timer = millis(); + distance = calculateDistance(); + Serial.println(distance); + timer = currentMillis; + } - distance = calculateDistance(); + if (radio.available()) { @@ -108,13 +114,13 @@ void loop() { if(distance < 20){ - Serial.println("Achtung!"); + //Serial.println("Achtung!"); if(pwmA < 0 && pwmB < 0){ pwmA = 0; pwmB = 0; } } - + drive.setPWM_A(pwmA); drive.setPWM_B(pwmB); @@ -166,9 +172,10 @@ void commandInterpretation() { break; } case getTemp : { - Serial.println("Senden!"); - radio.stopListening(); - radio.write(&temperature, sizeof(int16_t)); + //Serial.println("Senden!"); + radio.stopListening(); + int16_t sendData = temperature; + radio.write(&sendData, sizeof(int16_t)); radio.startListening(); break; } diff --git a/Code/miniRobot/temperatureDistance.ino b/Code/miniRobot/temperatureDistance.ino index 74535f3..a3e977c 100644 --- a/Code/miniRobot/temperatureDistance.ino +++ b/Code/miniRobot/temperatureDistance.ino @@ -5,14 +5,15 @@ int trig; int echo; -//int distance = 0; -int distance2 = 0; +uint16_t distance3 = 0; +uint16_t distance2 = 0; //ISR for PCINT20 ISR(PCINT2_vect) { - distance = pulseIn(echo, HIGH); - if(distance > 0){ - distance2 = distance; + distance3 = pulseIn(echo, HIGH); + + if(distance3 > 0){ + distance2 = distance3; } delayMicroseconds(10); @@ -26,12 +27,11 @@ void setEchoPins(int pin1, int pin2){ } int16_t calculateDistance(){ - int16_t result = distance2/ 58; - - if(result > maxDistance){ - result = maxDistance; + int16_t result2 = distance2/ 58; + if(result2 > maxDistance){ + result2 = maxDistance; } - return result; + return result2; } void measureDistance(){ @@ -89,6 +89,7 @@ void tempDistSetup(){ // Reset the trigger pin and wait a half a second digitalWrite(trig, LOW); delayMicroseconds(500); + Serial.println(echo); sei(); @@ -102,7 +103,7 @@ void runMeasurements(){ } Serial.print("Temperatur: "); - Serial.println(dallas(2, 0)); + Serial.println(dallas(4, 0)); Serial.print("Distanz: "); Serial.print(calculateDistance()); diff --git a/Code/miniRobotRC/fahrsteuerung_old.ino b/Code/miniRobotRC/fahrsteuerung_old.ino index 09b72c3..1370be8 100644 --- a/Code/miniRobotRC/fahrsteuerung_old.ino +++ b/Code/miniRobotRC/fahrsteuerung_old.ino @@ -51,26 +51,31 @@ void manualDigitalDrive() { } //Temperatur <3 - - if((unsigned long)(millis() - temp_time) >= 1000){ // jede Sekunden + unsigned long currentMillis = millis(); + if((unsigned long)(currentMillis - temp_time) >= 1000){ // jede Sekunden temp_time = millis(); bool err = false; clearCommands(); + commands[0] = getTemp; radio.write(&commands, sizeof(commands) && !err); unsigned long start = micros(); radio.startListening(); while(!radio.available()){ //Serial.println("nix"); - if((unsigned long)(micros()- start) >= 1){ - + unsigned long currentMicros = micros(); + if((unsigned long)(currentMicros - start) >= 1){ + err = true; } } if(!err){ - radio.read(&temperature, sizeof(int16_t)); + int16_t readData; + radio.read(&readData, sizeof(int16_t)); + temperature = readData; } radio.stopListening(); + clearCommands(); } // } diff --git a/Code/miniRobotRC/funkInit.ino b/Code/miniRobotRC/funkInit.ino index aa72370..fa40d29 100644 --- a/Code/miniRobotRC/funkInit.ino +++ b/Code/miniRobotRC/funkInit.ino @@ -2,7 +2,7 @@ void funkInit() { radio.begin(); radio.openWritingPipe(address); - radio.openReadingPipe(0, address2); + radio.openReadingPipe(1, address2); radio.setPALevel(RF24_PA_MAX); radio.stopListening(); } diff --git a/Code/miniRobotRC/miniRobotRC.ino b/Code/miniRobotRC/miniRobotRC.ino index e465369..f93a12c 100644 --- a/Code/miniRobotRC/miniRobotRC.ino +++ b/Code/miniRobotRC/miniRobotRC.ino @@ -39,8 +39,8 @@ bool forwardB = true; bool driveOn = false; uint16_t driveTimeout = 0; -int16_t distance; -int16_t temperature = 0; +uint8_t distance; +uint8_t temperature = 0; unsigned long temp_time = millis();