arduino aansturing met bleuthoot

Discussie in 'Modelbouwsoftware' gestart door Marc w, 23 jan 2022.

  1. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.291
    Locatie:
    Boskoop
    Een kleine correctie: het afsluit karakter dat via de seriële monitor verzonden wordt is het regelterugloop karakter (ASCII code 13), niet het nul karakter (ASCII code 0). Maar dat heeft hetzelfde effect, géén invloed op de relaisstanden.
     
    Marc w vindt dit leuk.
  2. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.291
    Locatie:
    Boskoop
    Ik hoop dat ik niet verveel, maar ik heb eens geëxperimenteerd met de SoftwareSerial library.
    Met een USB_UART converter aangesloten aan pins 2 en 3, en deze schets:
    Schermafbeelding 2022-01-28 om 16.11.54.png
    kan ik verbinding maken met de standaard arduino monitor in de pc, alles werkt zoals eerder.
    Het duurde wel even totdat ik ontdekte dat je de Tx van de converter op de Rx pin van de arduino moet steken, en andersom :rolleyes:

    Het uploaden van de sketch gaat niet op deze manier, maar moet met de "gewone" USB verbinding, wat wel een beetje te verwachten is.

    Op deze manier moet het dus ook mogelijk zijn om de Bluetooth module aan pins 2 en 3 te verbinden, en (hopelijk) tegelijk de gewone USB verbinding met Serial.xx met de pc te laten communiceren en uploads te doen.

    Wat ik ook veranderd heb is dat ik de while aan het begin van de loop, waardoor de loop daar bleef hangen zodra er geen input was, weggehaald heb, zodat de loop altijd doorloopt. Dit lijkt me toch de betere optie zodat je later zaken als eindschakelaars voor de spindels in de code kan verwerken, en daarvoor dus ook Hall-sensors kunt gebruiken.
    Gewone microswitches voor dat doel kun je echter ook in de verbinding naar de relaismodule verwerken, maar met deze code behoud je beide mogelijkheden.

    ( // Serial.begin (9600); in regel 17 is een overblijfsel, en kan eruit.)
     
    Laatst bewerkt: 29 jan 2022
    Bruno van Hoek en Marc w vinden dit leuk.
  3. Marc w

    Marc w

    Lid geworden:
    10 feb 2013
    Berichten:
    3.280
    Locatie:
    Turnhout belgie
    alle hulp en tips zijn welkom en worden zeker gewaardeerd, ik ben niet iemand die snel ergens iets kopieert en daarna klaar.
    De boel effe doorgronden duurt wel langer maar dan weet je tenminste wat je aan het doen bent.
    Voor volgende heb ik het relais bord terug verwijderd en de L293D rechtstreeks op de arduino geplaatst.
    Ondertussen ergens een code samengeraapt uit enkel vb, deze werkt maar ik kan het gegeven " String iS" "; niet plaatsen, maar zonder werkt het niet ( zie voorbeelden)
    motortest2 deze werkt
    //motortest2
    char t;
    String iS="";
    #include <AFMotor.h>

    AF_DCMotor motor1(1);
    AF_DCMotor motor2(2);
    AF_DCMotor motor3(3);
    AF_DCMotor motor4(4);

    void setup()
    {
    motor1.setSpeed(255);//Can be set from 0-255
    motor2.setSpeed(255);
    motor3.setSpeed(255);
    motor4.setSpeed(255);

    motor1.run(RELEASE);
    motor2.run(RELEASE);
    motor3.run(RELEASE);
    motor4.run(RELEASE);
    Serial.begin(9600);
    }

    void loop()
    {
    if(Serial.available()){
    while(Serial.available())
    {
    char iC = (char)Serial.read();
    iS += iC;
    }
    while (Serial.available() > 0)
    { t = Serial.read() ; }
    if(iS == "f"){ //To move forward
    motor1.run(FORWARD);
    }
    else if(iS == "b"){ //To move backward
    motor1.run(BACKWARD);
    }
    else if(iS == "s"){ //To stop
    motor1.run(RELEASE);
    }
    iS = "";
    } }


    Motortest3 deze werkt dus niet :(
    //motortest3
    char t;

    #include <AFMotor.h>

    AF_DCMotor motor1(1);
    AF_DCMotor motor2(2);
    AF_DCMotor motor3(3);
    AF_DCMotor motor4(4);

    void setup()
    {
    motor1.setSpeed(255);//Can be set from 0-255
    motor2.setSpeed(255);
    motor3.setSpeed(255);
    motor4.setSpeed(255);

    motor1.run(RELEASE);
    motor2.run(RELEASE);
    motor3.run(RELEASE);
    motor4.run(RELEASE);
    Serial.begin(9600);
    }

    void loop()
    {
    if (Serial.available()) { // bleuthoot aansturing lezen en printen
    t = Serial.read();
    Serial.println(t);
    }

    if(t == "f"){ //To move forward
    motor1.run(FORWARD);
    }
    else if(t == "b"){ //To move backward
    motor1.run(BACKWARD);
    }
    else if(t == "s"){ //To stop
    motor1.run(RELEASE);
    }

    }

    Ben nog aan het testen via seriele monitor , dus zonder de H06 ( ik doe het liever stap voor stap, zodat ik het wat beter begrijp)
    vgr Marc
     
    Bruno van Hoek vindt dit leuk.
  4. martin_12

    martin_12

    Lid geworden:
    28 jun 2014
    Berichten:
    81
    Het is wel een gok maar makkelijk te testen: Enkele quotes in de if / else if:
    if(t == 'f'){ //To move forward

    Enkele quotes bij een char, dubbele bij een string.
     
    Marc w vindt dit leuk.
  5. Marc w

    Marc w

    Lid geworden:
    10 feb 2013
    Berichten:
    3.280
    Locatie:
    Turnhout belgie
    En het zit in een klein hoekje .
    de "char" die ik gebruik is niet voldoende, het moet blijkbaar een "int zijn"
    de code

    #include<AFMotor.h>
    AF_DCMotor motor1(1);
    int t;
    void setup()
    {
    Serial.begin(9600);
    motor1.setSpeed(255); // motor snelheid tussen0 tot 255
    }
    void loop() {
    if (Serial.available()) { // bleuthoot aansturing lezen en printen
    t = Serial.read();
    Serial.println(t);
    }
    if(t=='1') // vooruit
    {
    motor1.run(FORWARD);
    }
    if(t=='2') // achteruit
    {
    motor1.run(BACKWARD);
    }
    if(t=='3') //stop
    {
    motor1.run(RELEASE);
    }
    }

    tot een volgende stap,
    vgr Marc
     
  6. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.291
    Locatie:
    Boskoop
    Hier zit er een space tussen de quotes, maar in de code is het correct zonder gedaan. Dit is de initiëring van een String type variabele, met als begin een "lege" string.

    In het eerste stuk code van jou zit een sectie die van de binnengekomen karakters in de buffer een string maakt, door met een while loop de verschillende karakters aan elkaar te breien. Het verbaast me dat dat met een simpel iS += iC kan, ik zou verwachten dat dat een optelling van de ASCI-codes opleveren zou, met een heel andere uitkomst. Maar wie weet...
    Mij lijkt het onnodig om een string te gebruiken als je toch alleen maar enkele karakters stuurt om een actie te bewerkstelligen, wat je zelf ook al aangeeft in de 2e code.
    Waarom je hierbij opeens een int type nodig hebt is mij niet helemaal duidelijk, ook cijfers hebben een ASCI-code. Alleen is dat voor "2" getalwaarde 50 in plaats van 2, ik denk dus dat het aan de manier ligt waarmee de seriële monitor van arduino de invoer "vertaalt" voordat het verzonden wordt. Ik zou bij letters en char type blijven, dan heb je tenminste 26 invoermogelijkheden i.p.v. 10 ;)

    Ik heb de AFmotor.h library nog niet opgezocht, maar ik zie dat je maar één pin per motor hoeft te definiëren, terwijl vooruit/stop/achteruit toch 3 verschillende gevallen zijn waarvoor je minstens 2 aansluitingen nodig hebt. Ook in het datasheet van de L293 is dat te zien.
     
    Bruno van Hoek vindt dit leuk.
  7. Marc w

    Marc w

    Lid geworden:
    10 feb 2013
    Berichten:
    3.280
    Locatie:
    Turnhout belgie
    ter aanvulling van miijn laatste schets.
    als ik in de seriele monitor 1-2 of 3 typ geeft de uitgang wat anders weer.
    bij invoer1 word dat 49 en 10 ( onder elkaar )
    bij - 2 50 en 10
    bij - 3 51 en 10

    deze avond nog even verder testen als ik meerdere motoren koppel ;)
    vgr Marc
     
  8. Marc w

    Marc w

    Lid geworden:
    10 feb 2013
    Berichten:
    3.280
    Locatie:
    Turnhout belgie
    2de aanvulling
    als ik " a-z-e gebruik ipv 1-2-3 voor- achter- stop
    bij a 97
    10
    bij e 101
    10
    bij z 122
    10
    bij e 101
    10
     
  9. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.291
    Locatie:
    Boskoop
    Dat klopt dus met de ASCI-code, ik begrijp dan nog steeds niet waarom een char type voor t niet werkt.
    (10 is de code voor een nieuwe regel)
     
  10. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.291
    Locatie:
    Boskoop
    Ik heb de library bekeken, maar dat wordt te ingewikkeld voor mij. Ik lees in de beschrijving van het L293 shield wel dat de AFmotor.h library verplicht gebruikt moet worden, dus de pins van de arduino zullen daar ook wel in gedefinieerd zijn.

    AF_DCMotor motor1(1); blijkt dus de instance-definitie voor de library te zijn.

    EDIT: mijn (jouw) code zoals ik in post #15 liet zien werkt dus gewoon met een char type en 1 of 2 als input!?
     
    Laatst bewerkt: 29 jan 2022
  11. Marc w

    Marc w

    Lid geworden:
    10 feb 2013
    Berichten:
    3.280
    Locatie:
    Turnhout belgie
    ondertussen de int terug vervangen door char :confused:
    en het blijft werken, vreemd , zal dus wel iets fout gedaan hebben al weet ik niet wat ....
     
  12. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.291
    Locatie:
    Boskoop
    Heb je hier misschien iets veranderd in de monitor?
    Schermafbeelding 2022-01-29 om 11.44.55.png

    Als je hier "geen regeleinde" kiest wordt er dus maar 1 input karakter verzonden. Dit blijft dan in de loop zitten, waardoor de actie in de if/else if sectie steeds weer opnieuw gestart wordt. Afhankelijk van hoe de library opgezet is, bijvoordeeld met een slow start of een delayed start kan dat tot vreemde resultaten leiden.

    Bij een wisselopdracht zoals bij een verlichtingsrelais wordt het ook leuk, dan gaat die "flipperen" doordat er bij elke voorbijgang van de loop een wissel is.

    Altijd één van de regeleinde-mogelijkheden kiezen dus.
     
  13. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.291
    Locatie:
    Boskoop
    Ik ben geen voorstander van het gebruik van een "shield" welke alleen maar werkt met een bijbehorende "onbegrijpelijke " ( voor mij dan) library. Ik hou liever het overzicht met een kale chip of op zijn hoogst een simpel te begrijpen module.
    Ik heb in samenwerking met MBF collega-modelbouwer @Peter58 een arduino spindelaandrijving opgezet voor zijn bootkraan, gebruikmakend van een TB6612FNG chip. In dat geval werd de aansturing met een reguliere zender/ontvanger gedaan:

    Code:
      if (pulseA > 1550) {
        if ((millis() - reversedelay) > lasttimeRA) {
          snelA = map ( pulseA, 1550, rxmax, 0, 255); // vertaal de input (zenderknuppel voorwaarts) naar het output PWM bereik
          motA1 = 1;
          lasttimeFA = millis();
        }
        else motA1 = 0;
        motA2 = 0; // output is LOW.
        instopvlagA = false;
      }
      else if (pulseA < 1450) {
        motA1 = 0; // output is LOW.
        if ((millis() - reversedelay) > lasttimeFA) {
          snelA = map ( pulseA, 1450, rxmin, 0, 255); // vertaal de input (zenderknuppel achterwaarts) naar het output PWM bereik
          motA2 = 1;
          lasttimeRA = millis();
        }
        else motA2 = 0;
        uitstopvlagA = false;
      }
      else {
        motA1 = 0; // output is LOW.
        motA2 = 0; // output is LOW.
        lasttimeFA = millis();
        lasttimeRA = millis();
      }
    
    De chip aansturen is vrij eenvoudig, twee pinnen waarvan één op laag gezet wordt, en de andere op hoog, of omgekeerd, om de draairichting te bepalen. Een derde pin krijgt een PWM signaal om de snelheid te manipuleren. De eindschakelaars integreren en voorkomen dat de motor te snel van voorwaarts naar achterwaarts omschakelt is weer wat anders.......

    Voor zover ik van Peter begrepen heb werkt alles naar behoren, dus nu nog even naar bluetooth ombouwen :eek:;) (al zie ik nog niet of en hoe je daar een proportioneel signaal kan genereren)
     
    Laatst bewerkt: 30 jan 2022
    Bruno van Hoek vindt dit leuk.
  14. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.291
    Locatie:
    Boskoop
    Plaatjes (2 spindels):
    Motor_driver.jpg
    TB6612FNG.jpg
    TB6612FNG_tabel.png
     
    Marc w en Bruno van Hoek vinden dit leuk.
  15. Marc w

    Marc w

    Lid geworden:
    10 feb 2013
    Berichten:
    3.280
    Locatie:
    Turnhout belgie
    kan me inderdaad herinneren dat ik per ongeluk ergens verkeerd had geklikt, en dit terug gewijzigd naar wat ik dacht dat er stond, zeer waarschijnlijk dus NIET.
    nogmaals, bedankt om mee te denken, wat we nu hebben had ik op mijn eentje waarschijnlijk pas bereikt over een maand.
    De gedachten dat ik tegen de zomer eindelijk dit schip werkend zal hebben geeft me echt wel de moed om nu verder te gaan tot het einde, al zal het wegens prive redenen niet altijd even vlot gaan.
     
    Herby63 vindt dit leuk.
  16. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.291
    Locatie:
    Boskoop
    Goed, na wat overleg achter de schermen met Marc ga ik hier verder om mijn ideeën hier in dit draadje te proppen :). Het zal beslist niet de enige manier van aanpak zijn, maar kan misschien als katalysator dienen.

    Ten eerste ga ik uit van het gebruik van de TB6612FNG motor controlemodule die ik hierboven liet zien, simpelweg omdat het een van de weinige is waar ik een beetje inzicht in de werking ervan heb, en ervaring "op afstand" via het project samen met Peter58. Daarbij worden per motor 3 pins aangestuurd, IN1, IN2 voor draairichting en stop, en PWM voor de snelheidsinstelling. De STBY pin wordt continue op H gezet, en is verder niet nodig. IN1/2 worden met een digitalWrite statement aangestuurd, PWM wordt met analogWrite met een waarde tussen 0 en 255 aangestuurd. Let erop dat niet alle pins met PWM overweg kunnen, en dat varieert per type arduino bord.

    Verder heb ik een soort "zendprotocol" bedacht voor de codes die via de seriële poort ontvangen worden. Dit is maar een keuze, en de arduino code kan met gemak aan een ander protocol aangepast worden:
    - een enkele kleine letter a,b,c,... enz. voor de typische aan/uit wisselfuncties, bijvoorbeeld verlichting, brandwaterpomp enz.
    - een getal 0 t/m 9 voor de motoren die volgens bovengenoemde controlemodule aangestuurd worden, gevolgd door een hoofdletter als tweede karakter òf een cijfer 0 tm 9, met de volgende betekenissen.
    - voor motor nummer 1: 1V is draairichting vooruit, 1S is stop, 1A is draairichting achteruit, 13 is snelheid 3, 17 is snelheid 7.
    Om de snelheidsinstelling te vereenvoudigen is het bereik 0 t/m 255 in 9 vaste snelheden verdeeld, 0 = 0, 1 = 29, 2 = 58, etc. (9 = 255 i.p.v.261 om niet buiten het bereik te komen).

    Het eerst-binnenkomende karakter wordt uitgelezen op de inmiddels bekende manier, is het een herkend cijfer dan wordt er een tweede karakter uitgelezen. Aan het einde van de code wordt de rest van de aanwezige karakters uit de serial buffer uitgelezen en gedumpt.

    IN1 en IN2 zijn de IN pins, spd is de PWM pin. De output pins ontbreken nog.

    Code:
    /*
     * Geen gecombineerde opdrachten mogelijk, buffer wordt gewist aan einde loop
     * cijfer eerst voor motor controle
     * tweede karakter V=vooruit, A=vooruit, S=stop, cijfer=snelheid (0-9)
     */
    
    bool SCHAKEL1;
    bool SCHAKEL2;
    bool IN1 = 0, IN2 = 0;
    
    int spd = 0;
    
    char t;
    char mc;
    
    void setup() {
     
      Serial.begin(9600);
      pinMode(14, OUTPUT); // relais 1
      pinMode(15, OUTPUT); // relais 2
     
      digitalWrite(14, HIGH); //relais off
      digitalWrite(15, HIGH); //relais off
     
      SCHAKEL1 = true;
      SCHAKEL2 = true;
    
    }
    
    void loop() {
     
      if (Serial.available()) {
        t = Serial.read();
        Serial.println(t);
      }
    
      if (t == '1') {
        mc = Serial.read ();
        if (mc == 'V') {
          IN1 = 1;
          IN2 = 0;
        }
        if (mc == 'A') {
          IN1 = 0;
          IN2 = 1;
        }
        if (mc == 'S') {
          IN1 = 0;
          IN2 = 0;
        }
        if (mc > 47 && mc < 58) { // cijfer karakters 0 t/m 9
        // bereken speed output in stappen van 29, gebaseerd op cijfer-karakter 0 (=0) tot 9 (=261).
          spd = (mc - 48)*29;
          if (spd > 255) spd = 255;
        }
    
        Serial.print ("   "); Serial.print (mc); Serial.print ("   ");  Serial.print (IN1);
        Serial.print ("   "); Serial.print (IN2); Serial.print ("   ");  Serial.println (spd);
      }
     
      if (t == 'a') {
        SCHAKEL1 = !SCHAKEL1; // true wordt false of false wordt true
        digitalWrite (14, SCHAKEL1);
      }
    
      if (t == 'b') {
        SCHAKEL2 = !SCHAKEL2;
        digitalWrite (15, SCHAKEL2);
      }
    
      do {  // maak buffer leeg met do..while loop
        Serial.read();
      } while (Serial.available()>0);
     
      //Serial.print (SCHAKEL1); Serial.print ("     "); Serial.println (SCHAKEL2);
      t = 0;
      mc = 0;
      delay (200);
    
    }
    Edit: "snelheidsgroepen" eruitgehaald, beetje misleidende benaming voor een vaste snelheid...
     
    Laatst bewerkt: 2 feb 2022
  17. Marc w

    Marc w

    Lid geworden:
    10 feb 2013
    Berichten:
    3.280
    Locatie:
    Turnhout belgie
    [QUOTE="
    Voor zover ik van Peter begrepen heb werkt alles naar behoren, dus nu nog even naar bluetooth ombouwen :eek:;) (al zie ik nog niet of en hoe je daar een proportioneel signaal kan genereren)[/QUOTE]

    ik merk wel op dat in MITapp je de mogelijkheid bestaat om een schuifregelaar te plaatsen ipv een knop. Misschien dat deze de mogelijkheid bied, maar moet dit even verder onderzoeken, snelheid van de motoren aanpassen zou natuurlijk een pluspunt kunnen zijn.
     
  18. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.291
    Locatie:
    Boskoop
    Als je er aan toekomt om mijn laatste hersenspinsel te lezen zul je zien dat ik dat voorlopig opgelost heb door 9 vaste snelheden te kiezen binnen het spectrum van 0-255 (= stop tot maximum snelheid).
     
    Marc w vindt dit leuk.
  19. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.291
    Locatie:
    Boskoop
    Het werkt, ook de motoren!

    Code:
    /*
     * Geen gecombineerde opdrachten mogelijk, buffer wordt gewist aan einde loop
     * cijfer eerst voor motor controle
     * tweede karakter V=vooruit, A=vooruit, S=stop, cijfer=snelheid (0-9)
     */
    
    bool SCHAKEL1;
    bool SCHAKEL2;
    
    int spd = 0;
    
    char t;
    char mc;
    
    void setup() {
     
      Serial.begin(9600);
      pinMode(5, OUTPUT); // motorregelaar
      pinMode(6, OUTPUT); // motorregelaar
      pinMode(7, OUTPUT); // motorregelaar
      pinMode(8, OUTPUT); // motorregelaar
      pinMode(9, OUTPUT); // motorregelaar
      pinMode(10, OUTPUT); // motorregelaar
      pinMode(11, OUTPUT); // motorregelaar
      pinMode(13, OUTPUT); // Onboard LED
      pinMode(14, OUTPUT); // relais 1
      pinMode(15, OUTPUT); // relais 2
    
      digitalWrite(5, HIGH); // motorregelaar, inputs low & PWM high: motor stop, vrij draaiend.
      digitalWrite(6, LOW);
      digitalWrite(7, LOW);
      digitalWrite(8, HIGH);
      digitalWrite(9, LOW);
      digitalWrite(10, LOW);
      digitalWrite(11, HIGH);
      digitalWrite(13, HIGH); //LED uit
      digitalWrite(14, HIGH); //relais uit
      digitalWrite(15, HIGH); //relais uit
     
      SCHAKEL1 = true;
      SCHAKEL2 = true;
    
    }
    
    void loop() {
     
      if (Serial.available()) {
        t = Serial.read();
        Serial.println(t);
      }
    
      if (t == '1') {
        mc = Serial.read ();
        if (mc == 'V') {
          digitalWrite (7,HIGH);
          digitalWrite (6,LOW);
        }
        if (mc == 'A') {
          digitalWrite (7,LOW);
          digitalWrite (6,HIGH);
        }
        if (mc == 'S') {
          digitalWrite (7,LOW);
          digitalWrite (6,LOW);
        }
        if (mc > 47 && mc < 58) { // cijfer karakters 0 t/m 9
        // bereken speed output in stappen van 29, gebaseerd op cijfer-karakter 0 (=0) tot 9 (=261).
          spd = (mc - 48)*29;
          if (spd > 255) spd = 255;
          analogWrite (5,spd);
        }
      }
    
      if (t == '2') {
        mc = Serial.read ();
        if (mc == 'V') {
        digitalWrite (9,HIGH);
        digitalWrite (10,LOW);
        }
        if (mc == 'A') {
        digitalWrite (9,LOW);
        digitalWrite (10,HIGH);
        }
        if (mc == 'S') {
        digitalWrite (9,LOW);
        digitalWrite (10,LOW);
        }
        if (mc > 47 && mc < 58) { // cijfer karakters 0 t/m 9
        // bereken speed output in stappen van 29, gebaseerd op cijfer-karakter 0 (=0) tot 9 (=261).
          spd = (mc - 48)*29;
          if (spd > 255) spd = 255;
          analogWrite (11,spd);
        }
      }
     
      if (t == 'a') {
        SCHAKEL1 = !SCHAKEL1; // true wordt false of false wordt true
        digitalWrite (14, SCHAKEL1);
      }
    
      if (t == 'b') {
        SCHAKEL2 = !SCHAKEL2;
        digitalWrite (15, SCHAKEL2);
      }
    
      if (t == 'c') PORTB = PORTB ^ B00100000;  // inverteer pin 13
    
      do {  // maak buffer leeg met do..while loop
        Serial.read();
      } while (Serial.available()>0);
     
      //Serial.print (SCHAKEL1); Serial.print ("     "); Serial.println (SCHAKEL2);
      t = 0;
      mc = 0;
      delay (200);
    
    }
    De regel met PORTB enz. is een alternative manier om een output te "flippen".

    20220201_192707.jpg

    De motortjes hebben een eigen voeding, in dit geval een enkele Li-ion cel. De arduino en de primaire kant van de driver worden hier vanuit de usb aansluiting gevoed.
     
    Laatst bewerkt: 1 feb 2022
  20. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.291
    Locatie:
    Boskoop
    Filmpje. ik heb de pins voor de aan/uit schakelingen verplaatst naar 17/18/19. En het laat maar één motor zien, maar ik neem aan dat het duidelijk is dat de tweede motor net zo werkt als je als eerste karakter de 2 kiest.

    Ik ga wel nul als de snelheidsinstelling eruithalen, dat leidt tot verwarring samen met de motorstop door code 1S of 2S.

     
    Laatst bewerkt: 2 feb 2022
    Marc w vindt dit leuk.

Deel Deze Pagina