svanted: OK, fått det att fungera bra nu iaf med en väldigt klen konding. Då blir det inga "urladdningar" som får motorn att gå lite extra eller så.
Men en MCP4725, är det för att "jämna till" spänningen ut från Arduinon då eller?
Icecap: Ha i åtanke att detta är det första jag gör med Arduino, någonsin
Oftast har lösningarna bestått av ett herrans massa trial n error tills det blivit rätt,
samt hjälp här på forumet från er hjältar som kommit med förslag som jag ibland lyckats implementera.
Det har varit mycket fram och tillbaka, och inget problem liknar det andra tidigare.
Koden ser nog rätt bedrövlig ut för en som är van med sånt här.
Men.. DEN FUNGERAR! Och nu fungerar den exakt som jag vill och som det var tänkt.
Vidare arbete kommer bestå av att försöka snygga till koden, och stressa maskineriet för
att se vad som kan gå fel och försöka undvika att motorn rusar och dylikt.
Jag har märkt att jag kan få ett gäng olika förslag från olika programmerare, som ska göra samma sak jag är ute efter.
Vissa förslag kanske är 10 rader kod på en plats i sketchen, ett annat förslag kan vara 50 rader kod, på flera olika platser i sketchen.
Är det för stort så tenderar jag blir förvirrad och backa ur att försöka skjuta in det i min sketch, jag föredrar de mindre kodsnuttarna som hittils dessutom fungerat bra. Men framförallt för att det är lättare så också.
Det håller hela projektet på en någorlunda överskådlig sikt för min nybörjarhjärna.
Hela sketchen är trots detta ca fjorton A4 sidor kod. Så det blir lätt förvirrande hur jag än gör.
Här är den kodsnutt som jag till slut använde (fick den av en annan programmerare och kunde modda den lite för att passa mig) för att få den att bromsa in i steg, det blir exakt på millimetern dessutom. Jag hade skrivit en mycket snarlik kod själv, men använde aldrig while, utan försökte få det fungera med if och if else... Så det var min tabbe. Tänkte inte ens på while funktionen.
Kod: Markera allt
if( (PulseCount) > UserStopPulseCount + 2 && digitalRead(HighSpeed2Pin) && UserStopPulseCount>-998 ){
while(digitalRead(HighSpeed2Pin)){
if(PulseCount > UserStopPulseCount + 70){
analogWrite(controlPin2, 55); // snabbt bakåt
}else if (PulseCount > UserStopPulseCount + 25){
analogWrite(controlPin2, 85); // medium bakåt
}else if (PulseCount > UserStopPulseCount+2){
analogWrite(controlPin2, 110); // långsamt bakåt
}else{
// är på rätt ställe, fastnar i While loppen tills man släpper knappen
{
lcd.setCursor(0, 1);
lcd.print("Pr.Stop");
}
digitalWrite(controlPin1, LOW);
digitalWrite(controlPin2, LOW);
Serial.println("Programmed STOP activated ⛔");
delay(10);
}
}
}