Arduinokod för motor på/av med knapp

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
fosfor
Inlägg: 453
Blev medlem: 13 februari 2013, 05:43:15
Kontakt:

Arduinokod för motor på/av med knapp

Inlägg av fosfor »

Hej!

Målet är att kunna köra en motor åt ena hållet så länge knappen är intryckt.
Och åt andra hållet sålänge en annan knapp är intryckt. Om båda råkar tryckas in samtidigt, ska inget hända.
När ingen trycks, så ska motorn stå still. :humm:

Har H-brygga (L293D) och hela fillevitten inkopplat i en fungerande konfig med Arduino Uno.
MEN i nuläget är knapp1 bara på och av, medans knapp2 bara byter riktning på motorn. Dvs inte riktigt rätt.
Dessutom snurrar motorn nu konstant tills man trycker igen, och nedhållen knapp har ingen funktion. :humm:

Någon som har en bra rekommendation på kod att använda? :)
Användarvisningsbild
Icecap
Inlägg: 26105
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Arduinokod för motor på/av med knapp

Inlägg av Icecap »

Nu måste jag bara kolla lite:
Du menar att det skulle vara svårt att göra det program? Alltså som i "göra själv"?
Användarvisningsbild
fosfor
Inlägg: 453
Blev medlem: 13 februari 2013, 05:43:15
Kontakt:

Re: Arduinokod för motor på/av med knapp

Inlägg av fosfor »

Va?

Peka mig bara i rätt riktning så hoppas jag att jag kan klura ut det.
Användarvisningsbild
Gizmo
Inlägg: 1613
Blev medlem: 8 september 2009, 00:37:45
Ort: Göteborg
Kontakt:

Re: Arduinokod för motor på/av med knapp

Inlägg av Gizmo »

Tror det blir enklare att tipsa om du postar koden. Det finns många olika sätt att göra det på, och många tutorials att läsa på nätet.
Har för mig att man kan använda funktionen "code" (se ovan i rutan när man skriver inlägg) för att få koden syntaxmarkerad dessutom, det kan vara lite praktiskt för läsbarheten.
Ju mer man berättar om sitt projekt, eller bygge, desto tydligare svar får man. Eller kanske rent utav andra sätt att lösa problemen på.
Användarvisningsbild
Icecap
Inlägg: 26105
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Arduinokod för motor på/av med knapp

Inlägg av Icecap »

Du har alltså två ingångar med var sin knapp på. Här kallar jag dom "In1" och "In2".

Du har även fyra utgångar som ska stå i specifika mönster för rätt funktion. Här kallar jag dom "Out1", "Out2", "Out3" och "Out4".

Kod: Markera allt

if(In0 & !In1)
  {
  // Set Out1-4 to pattern for rotation to direction X
  }
else if{!In0 & In1}
  {
  // Set Out1-4 to pattern for rotation to direction Y
  }
else
  {
  // Set Out1-4 to pattern for stop
  }
Loopa detta kontinuerligt och du är i mål.

Funktionen:
Om In1 är påverkat OCH In2 INTE är det körs ena hållet.
Om in1 INTE är påverkat OCH In2 ÄR det körs andra hållet.
Annars stoppas det.
Användarvisningsbild
HUGGBÄVERN
Tidigare soundbrigade
Inlägg: 32626
Blev medlem: 23 augusti 2006, 22:44:11
Ort: Lilla Paris
Kontakt:

Re: Arduinokod för motor på/av med knapp

Inlägg av HUGGBÄVERN »

Vi är alla olika men jag kollar nätet först. En del blir nervösa av att nödgas få inspiration och ideer från annat håll men det är ju en god start.
Här var något jag hittade:
http://howtomechatronics.com/tutorials/ ... -h-bridge/
https://www.allaboutcircuits.com/projec ... n-arduino/
http://www.instructables.com/id/Control ... Dual-Moto/
Användarvisningsbild
fosfor
Inlägg: 453
Blev medlem: 13 februari 2013, 05:43:15
Kontakt:

Re: Arduinokod för motor på/av med knapp

Inlägg av fosfor »

Här är motorns kod som den är nu.
Då med en knapp för on/off, och en knapp för reverserad riktning.
Knapparna behöver inte hållas in, utan kör ON vid ett klick.

Det jag vill ha är att knappen måste hållas in, samt att en knapp är för ena hållet, den andra knappen åt andra hållet.
En reverserad riktning behövs inte i mitt fall.

KODEN:

// ---- MOTOR CONST INTARNA ----
const int controlPin1 = 7;
const int controlPin2 = 6;
const int enablePin = 9;
const int directionSwitchPin = 4;
const int onOffSwitchStateSwitchPin = 5;
const int potPin = A0;

// ---- MOTOR INTARNA
int onOffSwitchState = 0;
int previousOnOffSwitchState = 0;
int directionSwitchState = 0;
int previousDirectionSwitchState = 0;

// ---- MOTOR CONST INTARNA VARIABLES ----
int motorEnabled = 0;
int motorSpeed = 0;
int motorDirection = 1;

// ---- MOTORNS VOID SETUP ----
pinMode(directionSwitchPin, INPUT);
pinMode(onOffSwitchStateSwitchPin, INPUT);
pinMode(controlPin1, OUTPUT);
pinMode(controlPin2, OUTPUT);
pinMode(enablePin, OUTPUT);
digitalWrite(enablePin, LOW);

// ---- MOTORNS VOID LOOP ----


onOffSwitchState =
digitalRead(onOffSwitchStateSwitchPin);
delay(1);
directionSwitchState =
digitalRead(directionSwitchPin);
motorSpeed = analogRead(potPin)/4;

if(onOffSwitchState != previousOnOffSwitchState){
if(onOffSwitchState == HIGH){
motorEnabled = !motorEnabled;
}
}
if (directionSwitchState !=
previousDirectionSwitchState) {
if (directionSwitchState == HIGH) {
motorDirection = !motorDirection;
}
}
if (motorDirection == 1) {
digitalWrite(controlPin1, HIGH);
digitalWrite(controlPin2, LOW);
}

else {
digitalWrite(controlPin1, LOW);
digitalWrite(controlPin2, HIGH);
}
if (motorEnabled == 1) {
analogWrite(enablePin, motorSpeed);
}
else {
analogWrite(enablePin, 0);
}
previousDirectionSwitchState =
directionSwitchState;
previousOnOffSwitchState = onOffSwitchState;
}
Användarvisningsbild
fosfor
Inlägg: 453
Blev medlem: 13 februari 2013, 05:43:15
Kontakt:

Re: Arduinokod för motor på/av med knapp

Inlägg av fosfor »

Lite pix på nuvaranda konfigurationen
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
fosfor
Inlägg: 453
Blev medlem: 13 februari 2013, 05:43:15
Kontakt:

Re: Arduinokod för motor på/av med knapp

Inlägg av fosfor »

Hej igen!

Nu använder jag denna del kod för att slå av och på motorn:
Kanske något ni ser direkt vad jag gjort fel? :humm:
Den tredje rutan kod (intest3Pin) är den enda som fungerar, flyttar jag upp den överst så blir det intest2Pin som hamnar nederst och då är det bara den som fungerar.
Alla intestPin ingångar är konfiguerade exakt likadant.
Jag vill ju att den ska kunna läsa två av dessa rutor. Så att jag kan styra motorn åt ena eller åt andra hållet.
När jag trycker de knappar som inte fungerar, så hör man ett litet surr från motorn. Som att den får "något" men startar inte.

{
val = digitalRead(intest1Pin); // Läser input värde
if (val == HIGH) { // Checkar om input är hög (knapp släppt)
digitalWrite(controlPin1, HIGH);
digitalWrite(controlPin2, LOW);
digitalWrite(enablePin, HIGH); // Slar av motor
} else {
digitalWrite(controlPin1, LOW);
digitalWrite(controlPin2, LOW); // Slar pa motor
}


val = digitalRead(intest2Pin); // Läser input värde
if (val == HIGH) { // Checkar om input är hög (knapp släppt)
digitalWrite(controlPin1, LOW);
digitalWrite(controlPin2, HIGH);
digitalWrite(enablePin, HIGH); // Slar av motor
} else {
digitalWrite(controlPin1, LOW);
digitalWrite(controlPin2, LOW); // Slar pa motor
}


// ENDAST DENNA FUNGERAR

val = digitalRead(intest3Pin); // Läser input värde
if (val == HIGH) { // Checkar om input är hög (knapp släppt)
digitalWrite(controlPin1, LOW);
digitalWrite(controlPin2, HIGH);
digitalWrite(enablePin, HIGH); // Slar av motor
} else {
digitalWrite(controlPin1, LOW);
digitalWrite(controlPin2, LOW); // Slar pa motor
}
kodar-holger
EF Sponsor
Inlägg: 916
Blev medlem: 26 maj 2014, 12:54:35
Ort: Karlskoga

Re: Arduinokod för motor på/av med knapp

Inlägg av kodar-holger »

Tips1: All kod körs och den körs uppifrån och ner. Kör den manuellt i huvudet så tror jag du själv kommer på vad som är fel. :D

Tips2: Kolla IceCaps kod tidigare i tråden. Fundera på vad den gör och varför den gör som den gör.
[VISA]
När du utvärderar knapp två överrider du det som gjorts efter avläsning av knapp 1 o.s.v.
Användarvisningsbild
fosfor
Inlägg: 453
Blev medlem: 13 februari 2013, 05:43:15
Kontakt:

Re: Arduinokod för motor på/av med knapp

Inlägg av fosfor »

OK ska kika!

Btw, hittade felet, tog bort lite kod så blev allt som det ska.

Detta löste problemet

{

val = digitalRead(intest1Pin); // Läser input värde
if (val == HIGH) { // Checkar om input är hög (knapp släppt)
digitalWrite(controlPin1, HIGH);
digitalWrite(controlPin2, LOW);
} else {

val = digitalRead(intest2Pin); // Läser input värde
if (val == HIGH) { // Checkar om input är hög (knapp släppt)
digitalWrite(controlPin1, LOW);
digitalWrite(controlPin2, HIGH);
} else {
digitalWrite(controlPin1, LOW);
digitalWrite(controlPin2, LOW); // Slar pa motor
}}

}
Användarvisningsbild
Icecap
Inlägg: 26105
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Arduinokod för motor på/av med knapp

Inlägg av Icecap »

Men fel är det ändå...
Om ena knappen är påverkat ställer du motorn till att köra riktning X.
Om inte stoppas den.
Och SEN kollar du andra knappen och kör riktning Y om den är påverkat.
Användarvisningsbild
Icecap
Inlägg: 26105
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Arduinokod för motor på/av med knapp

Inlägg av Icecap »

Men fel är det ändå...
Om ena knappen är påverkat ställer du motorn till att köra riktning X.
Om inte stoppas den.
Och SEN kollar du andra knappen och kör riktning Y om den är påverkat.
Användarvisningsbild
fosfor
Inlägg: 453
Blev medlem: 13 februari 2013, 05:43:15
Kontakt:

Re: Arduinokod för motor på/av med knapp

Inlägg av fosfor »

Ok... Men what to do then?

Nu är ju iaf funktionen precis som jag vill ha den.
Åt ena hållet om ena knappen hålls in och vice versa.
Användarvisningsbild
HUGGBÄVERN
Tidigare soundbrigade
Inlägg: 32626
Blev medlem: 23 augusti 2006, 22:44:11
Ort: Lilla Paris
Kontakt:

Re: Arduinokod för motor på/av med knapp

Inlägg av HUGGBÄVERN »

Du skulle kunna rita ett diagram, en villkorstabell så ser du hur det ska vara.
Skriv svar