lijnrobot freenove laten pauzeren

Arduino specifieke Software
Berichten: 1
Geregistreerd: 30 Apr 2021, 16:04

lijnrobot freenove laten pauzeren

Berichtdoor Robbbbbert » 30 Apr 2021, 16:10

Hoi,

Ik heb een lijnrobot die ik af en toe zou willen laten ´pauzeren´. Ik krijg dit niet voor elkaar met bv een delay. Maar misschien zet ik deze verkeerd.
Heeft iemand een idee?

Dit is de code:

#include "Freenove_4WD_Car_for_Arduino.h"

#define TK_STOP_SPEED 0
#define TK_FORWARD_SPEED (90 + tk_VoltageCompensationToSpeed )

//define different speed levels
#define TK_TURN_SPEED_LV4 (180 + tk_VoltageCompensationToSpeed )
#define TK_TURN_SPEED_LV3 (150 + tk_VoltageCompensationToSpeed )
#define TK_TURN_SPEED_LV2 (-140 + tk_VoltageCompensationToSpeed )
#define TK_TURN_SPEED_LV1 (-160 + tk_VoltageCompensationToSpeed )

int tk_VoltageCompensationToSpeed; //define Voltage Speed Compensation

void setup() {
pinsSetup(); //set up pins
getTrackingSensorVal();//Calculate Voltage speed Compensation
}

void loop() {
u8 trackingSensorVal = 0;
trackingSensorVal = getTrackingSensorVal(); //get sensor value

switch (trackingSensorVal)
{
case 0: //000
motorRun(TK_FORWARD_SPEED, TK_FORWARD_SPEED); //car move forward
break;
case 7: //111
motorRun(TK_STOP_SPEED, TK_STOP_SPEED); //car stop
break;
case 1: //001
motorRun(TK_TURN_SPEED_LV4, TK_TURN_SPEED_LV1); //car turn
break;
case 3: //011
motorRun(TK_TURN_SPEED_LV3, TK_TURN_SPEED_LV2); //car turn right
break;
case 2: //010
case 5: //101
motorRun(TK_FORWARD_SPEED, TK_FORWARD_SPEED); //car move forward
break;
case 6: //110
motorRun(TK_TURN_SPEED_LV2, TK_TURN_SPEED_LV3); //car turn left
break;
case 4: //100
motorRun(TK_TURN_SPEED_LV1, TK_TURN_SPEED_LV4); //car turn right
break;
default:
break;
}
}

void tk_CalculateVoltageCompensation() {
getBatteryVoltage();
float voltageOffset = 7 - batteryVoltage;
tk_VoltageCompensationToSpeed = 30 * voltageOffset;
}

//when black line on one side is detected, the value of the side will be 0, or the value is 1
u8 getTrackingSensorVal() {
u8 trackingSensorVal = 0;
trackingSensorVal = (digitalRead(PIN_TRACKING_LEFT) == 1 ? 1 : 0) << 2 | (digitalRead(PIN_TRACKING_CENTER) == 1 ? 1 : 0) << 1 | (digitalRead(PIN_TRACKING_RIGHT) == 1 ? 1 : 0) << 0;
return trackingSensorVal;
}

Advertisement

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: lijnrobot freenove laten pauzeren

Berichtdoor shooter » 01 Mei 2021, 17:04

zet in de case 5 even een delay van bijvoorbeeld 5000 dus delay(5000) dan staat het stil, echter zul je merken dat als de sensor niet verandert de kar stil blijft staan, dus zet eronder even een seconde vooruit bijvoorbeeld.
later zul je dat op gaan lossen met een millis() timer
ik zie overal u8 voor staan dat werkt dus ook niet goed, eenmaal declareren is genoeg.en jouw trackingsensorval berekening is wel erg ingewikkeld lijkt alhoewel goed te werken.
paul deelen
shooter@home.nl

Berichten: 287
Geregistreerd: 15 Apr 2021, 20:05

Re: lijnrobot freenove laten pauzeren

Berichtdoor ctunes » 06 Jun 2021, 22:19

Robbbbbert schreef:Hoi,

Ik heb een lijnrobot die ik af en toe zou willen laten ´pauzeren´.



Waar, wanneer, en vooral, waarom?

Berichten: 287
Geregistreerd: 15 Apr 2021, 20:05

Re: lijnrobot freenove laten pauzeren

Berichtdoor ctunes » 06 Jun 2021, 22:21

(om het: "hoe en wat gepauzeerd dient te worden", nog even buiten beschouwing te laten)

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Seo-Ul-Gag en 26 gasten