1 knops bediening dc motor met stroombegrenzer

Projecten die niet passen in bovenstaande onderwerpen
Gebruikers-avatar
Berichten: 229
Geregistreerd: 20 Jan 2013, 12:01

Re: 1 knops bediening dc motor met stroombegrenzer

Berichtdoor astrofrostbyte » 20 Apr 2013, 18:55

Mischien wordt een LED aangezet en direct erna weer uitgezet, bv als buttonstate==0

Code: Alles selecteren
  if (currentpeak == HIGH)
  {
    digitalWrite(led1,0);
    digitalWrite(led2,0);
  }
  else
  { if (buttonPushCounter %2 ==1)
    { digitalWrite(led1,1);
      digitalWrite(led2,0);
      if (buttonState == 0)                // <---- deze
      { digitalWrite(led1,0);
        digitalWrite(led2,0);
      }
    }
    else
    { digitalWrite(led2,1);
      digitalWrite(led1,0);
      if (buttonState == 0)                 // <---- deze
      { digitalWrite(led1,0);
        digitalWrite(led2,0);
      }
    }
  }


Als ik het bovenstaande 'vertaal' is onderstaande niet het zelfde ? : maar dan vanuit een LED gezien
Code: Alles selecteren
if ( ( currentpeak == LOW ) && (buttonPushCounter %2 ==1) && (buttonState == 1) )
{   digitalWrite(led1,1);  }
else
{   digitalWrite(led1,0);  }
   
if ( ( currentpeak == LOW ) && (buttonPushCounter %2 ==0) && (buttonState == 1) )
{   digitalWrite(led2,1);  }
else
{   digitalWrite(led2,0);  }
Gear: Arduino- Uno,Due,Ethernet,Mega2560 , OLS LogicAnalyser, TDS1002, Rigol DG1022, J-Link EDU, BusPirate

Advertisement

Berichten: 13
Geregistreerd: 24 Jan 2013, 22:59

Re: 1 knops bediening dc motor met stroombegrenzer

Berichtdoor rover8772 » 20 Apr 2013, 20:04

en waar moet ik deze kopieeren?

Berichten: 13
Geregistreerd: 24 Jan 2013, 22:59

Re: 1 knops bediening dc motor met stroombegrenzer

Berichtdoor rover8772 » 20 Apr 2013, 20:11

hmm...gekopieerd op de plaats waar je de pijltjes hebt gezet, maar geen verbetering...het vreemde is dat de onboard led (13) ook brand

Gebruikers-avatar
Berichten: 229
Geregistreerd: 20 Jan 2013, 12:01

Re: 1 knops bediening dc motor met stroombegrenzer

Berichtdoor astrofrostbyte » 21 Apr 2013, 10:59

je zou het dan moeten copieren in dit stuk :
Code: Alles selecteren
const int button1 = 22;
const int button2 = 24;
const int led1 = 11;
const int led2 = 12;

int buttonPushCounter = 0;
int buttonState = 0;
int lastButtonState = 0;
int currentpeak = 0;

//-------------------------------------------------
void setup()
{ pinMode(button1, INPUT);                      //
  pinMode(button2, INPUT);                      //
  pinMode(led1,OUTPUT);                         //
  pinMode(led2,OUTPUT);                         //

  Serial.begin(9600);
  digitalWrite (led1,LOW);                      //
  digitalWrite (led2,LOW);                      //
}

//-------------------------------------------------
void loop()
{
  buttonState = digitalRead(button1);    delay (50);
  currentpeak = digitalRead(button2);    delay (50);

  if (buttonState != lastButtonState)
  { if (buttonState == HIGH)
    { buttonPushCounter++;
      Serial.print("on ");
      Serial.println(buttonPushCounter %2);
    }
    else
    { Serial.println("off");
    }
  }//fi

  lastButtonState = buttonState;

  if ( ( currentpeak == LOW ) && (buttonPushCounter %2 ==1) && (buttonState == 1) )
  {   digitalWrite(led1,1);  }
  else
  {   digitalWrite(led1,0);  }
     
  if ( ( currentpeak == LOW ) && (buttonPushCounter %2 ==0) && (buttonState == 1) )
  {   digitalWrite(led2,1);  }
  else
  {   digitalWrite(led2,0);  }

}//loop
Gear: Arduino- Uno,Due,Ethernet,Mega2560 , OLS LogicAnalyser, TDS1002, Rigol DG1022, J-Link EDU, BusPirate

Berichten: 13
Geregistreerd: 24 Jan 2013, 22:59

Re: 1 knops bediening dc motor met stroombegrenzer

Berichtdoor rover8772 » 21 Apr 2013, 12:01

na veel geprobeer en gekl**t even navraag gedaan bij mijn leraar bij het NCOI, die ook arduino workshops geeft en die kwam met de volgende sketch op de proppen:


#define LED1 12
#define LED2 11
#define BUTTON1 10
#define BUTTON2 9


int statemachine = 0;
int button1_counter = 0;
int button2_counter = 0;
boolean BUTTON1_PRESSED = false;
boolean BUTTON2_PRESSED = false;


void setup()
{
pinMode(LED1, OUTPUT); digitalWrite(LED1, LOW); // LOW = off
pinMode(LED2, OUTPUT); digitalWrite(LED2, LOW); // LOW = off
pinMode(BUTTON1, INPUT); // LOW = ingedrukt
pinMode(BUTTON2, INPUT); // LOW = ingedrukt

statemachine = 0;
BUTTON1_PRESSED = false;
BUTTON2_PRESSED = false;
}

void loop()
{
delay(10); // just slow down the loop spped a little bit

// test & debounce button1
if (digitalRead(BUTTON1) == LOW) // button1 pressed
button1_counter++;
else
button1_counter--;
button1_counter = max(button1_counter, 0); // lower limit = '0'
button1_counter = min(button1_counter, 5); // upper limit = '5'
if (button1_counter == 0)
BUTTON1_PRESSED = false;
if (button1_counter == 5)
BUTTON1_PRESSED = true;

// test & debounce button2
if (digitalRead(BUTTON2) == LOW) // button2 pressed
button2_counter++;
else
button2_counter--;
button2_counter = max(button2_counter, 0); // lower limit = '0'
button2_counter = min(button2_counter, 5); // upper limit = '5'
if (button2_counter == 0)
BUTTON2_PRESSED = false;
if (button2_counter == 5)
BUTTON2_PRESSED = true;

// execute BUTTON1
switch (statemachine) {
case 0:
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
if (BUTTON1_PRESSED == true)
statemachine = 1;
break;
case 1:
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
if (BUTTON1_PRESSED == false)
statemachine = 2;
break;
case 2:
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
if (BUTTON1_PRESSED == true)
statemachine = 3;
break;
case 3:
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
if (BUTTON1_PRESSED == false)
statemachine = 0;
break;
default:
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
statemachine = 0;
break;
}

// execute BUTTON2
if (BUTTON2_PRESSED == true) {
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
}
}

deze werkt zoals ik het bedoelt had. dus nu even reverse engineeren... Dat switch/case statement moet ik nog even onder de knie krijgen.

maar bedankt voor de gegeven info !

Berichten: 13
Geregistreerd: 24 Jan 2013, 22:59

Re: 1 knops bediening dc motor met stroombegrenzer

Berichtdoor rover8772 » 24 Apr 2013, 10:59

heb deze sketch in een Attiny85 geprogrameerd, maar wat is nu het probleem, als button 2 ingedrukt wordt, gaan de leds uit, maar weer blijft er één zwak branden/knipperen. Kan dit liggen aan het feit dat de ATtiny op 1 MHz draait en de ATmega op 16 MHz ? of is het zo dat de ATtiny sommige instructies niet kan lezen ?

Gebruikers-avatar
Berichten: 229
Geregistreerd: 20 Jan 2013, 12:01

Re: 1 knops bediening dc motor met stroombegrenzer

Berichtdoor astrofrostbyte » 26 Apr 2013, 19:33

Je bent toch voor de statemachine gegaan zie ik, had ik ook al in m'n eerste reactie aangegeven dat het toch vaak wel het netste is.

je hebt nog kans in de code dat je bv in state 1 of 3 zit en dus een LED aangezet wordt, en in if Button2 wordt led weer uitgezet. effect is dat hij lichtjes oplicht.

// execute BUTTON2
if (BUTTON2_PRESSED == true)
{ digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
statemachine = ?? // <----- je zou de state ook niet kunnen forceren
}

Of je kan het geheel in een If - else zetten , als button2 is ingedrukt hoef je de switch-sace niet uit te voeren .
Gear: Arduino- Uno,Due,Ethernet,Mega2560 , OLS LogicAnalyser, TDS1002, Rigol DG1022, J-Link EDU, BusPirate

Berichten: 4
Geregistreerd: 20 Mei 2014, 15:39

Re: 1 knops bediening dc motor met stroombegrenzer

Berichtdoor PimV » 20 Mei 2014, 16:10

Zeer waarschijnlijk mosterd na de maaltijd, maar een zwak oplichtende LED wordt vaak veroorzaakt doordat de aansturende pin als INPUT met een pullup-weerstand is geconfigureerd. Dat gebeurt ook als je een pin eerst configureert als OUTPUT, deze HIGH stuurt en vervolgens omschakelt naar INPUT. Zie hier: http://arduino.cc/en/Tutorial/DigitalPins

Vorige

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 3 gasten