arduino aansturing met bleuthoot

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

  1. Marc w

    Marc w

    Lid geworden:
    10 feb 2013
    Berichten:
    3.281
    Locatie:
    Turnhout belgie
    Hey, beetje hulp gevraagd van de arduino kenners.
    Laat ik eerst het geheel plaatsen.
    Ik ben ondertussen al enkele jaren aan het bouwen aan een sleper( Sleper Zeehond) die ik wou uitrusten met een werkende kraan. De bedoeling was ook om een cursus arduino te volgen op de avondschool nadat ik de cursus inventor had afgerond. Maar het jaar dat ik wou starten zijn ze hier gestopt met de cursus te geven, nu 3jaar later nog steeds niets. De dichtstbij gelegen avondschool waar dit nu gegeven word is 45 min enkel rijden voor mij en na de dagtaak net iets te ver. Ben dus deze winter en corona tijd maar zelf begonnen met de oefeningen te maken.
    Vorige week vond ik de tijd gekomen om aan het echte werk te beginnen.
    Heb een kaart met 8 relais ,het motor schield L293D en de bleuthoot module H06 aangeschaft.
    Eerst heb ik met MIT app een prog geschreven waarop een reeks drukknoppen staan. ( test versie om wat uit te proberen) Voor de motoren drukknoppen die je moet vasthouden om signaal uit te sturen en voor de verlichting een enkele drukknop op aan en uit te schakelen.
    Jullie horen me dus al aankomen, ben al enkel avonden aan het prutsen en hoe vlot de les oefeningen ook gingen , loopt het nu langs geen kanten.
    probleem 1. als ik de relais kaart aansluit moet ik alle uitgangen in de setup "HIGH" maken om de relais niet te laten aantrekken, dit komt vreemd over. want later in het prog moet ik de uitgang low maken om de relais te laten aantrekken. Iemand een idee wat ik verkeerd doe??
    alvast bedankt, Marc
     
  2. Marc w

    Marc w

    Lid geworden:
    10 feb 2013
    Berichten:
    3.281
    Locatie:
    Turnhout belgie
    de code die ik tot nu toe heb geschreven

    char t;

    void setup() {
    Serial.begin(9600);
    pinMode(14, OUTPUT); // relais 1
    pinMode(15, OUTPUT); // relais 2
    pinMode(16, OUTPUT); // relais 3
    pinMode(17, OUTPUT); // relais 4
    pinMode(18, OUTPUT); // relais 5
    pinMode(19, OUTPUT); // relais 6
    pinMode(5, OUTPUT); // relais 7
    pinMode(6, OUTPUT); // relais 8

    digitalWrite(14, HIGH); //relais off
    digitalWrite(15, HIGH); //relais off
    digitalWrite(16, HIGH); //relais off
    digitalWrite(17, HIGH); //relais off
    digitalWrite(18, HIGH); //relais off
    digitalWrite(19, HIGH); //relais off
    digitalWrite(5, HIGH); //relais off
    digitalWrite(6, HIGH); //relais off
    }

    void loop() {


    if (Serial.available()) { // bluthoot aansuring lezen en printen
    t = Serial.read();
    Serial.println(t);
    }
    if (t == 'a') { //relais 1 aan-uit
    digitalWrite(14, LOW);
    }
    if ( t == 'A') {
    digitalWrite ( 14, HIGH);
    }
    }
     
  3. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.287
    Locatie:
    Boskoop
    Ik heb me sinds kort ook bezig gehouden met dergelijke relaiskaarten. Dit is normaal gedrag. De relaisspoelen worden meestal aangestuurd via een optocoupler, waarvan ingang van de primaire kant continue met de voedingsspanning van de arduino verbonden is, en de uitgang tussen deze voedingsspanning (HIGH) en GND (LOW) geschakeld wordt. in het laatste geval gaat de led in de optocoupler branden, en wordt de secondaire kant geleidend, waardoor het relais aantrekt.
     
  4. Marc w

    Marc w

    Lid geworden:
    10 feb 2013
    Berichten:
    3.281
    Locatie:
    Turnhout belgie
    bedankt ,
    Nu heb ik al op verschillende plaatsen gelezen dat ik de voeding van de relais kaart niet over de arduino mag gevoed worden als deze lang allemaal high geschakeld zijn.
    Voorlopig heb ik dit nog niet gedaan maar zal eens kijken wat er gebeurd als ik een afzonderlijke voeding aanleg, vermoed niet veel , maar je weet nooit ;)
     
  5. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.287
    Locatie:
    Boskoop
    Het beste maak je daarvoor twee aparte "bool" variabelen aan, bijvoorbeeld:
    bool SCHAKEL;
    bool VLAG;
    En hiervoor moet je de loop stoppen als je op de bewuste knop drukt , met een while-loop.
    Bijvoorbeeld:


    VLAG = false;
    SCHAKEL=true;

    void setup() enz......

    void loop() {
    lees t uit;
    while (t is A){
    VLAG=true;
    lees t uit; // om de while loop te kunnen verlaten moet je voortdurend de input verversen
    }
    if (VLAG==true){
    SCHAKEL = !SCHAKEL; // true wordt false of false wordt true
    digitalWrite (poortnummer, SCHAKEL);
    VLAG=false; // voorkomt dat de poort heen en weer blijft schakelen
    }
    }

    P.S. inspringen lukt hier niet, dus dat moet je zelf organiseren......

    P.S.2 foutje in het If-commando hersteld (== inplaats van =, ik leer het nooit :rolleyes:)
     
    Laatst bewerkt: 23 jan 2022
  6. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.287
    Locatie:
    Boskoop
    Je bedoelt een input LOW, want dat bekrachtigd het relais dus.
    Volgens mij trekken de spoelen zo'n 20 mA per stuk als ze ingeschakeld zijn, maar ik heb dat nog niet gemeten.

    En het gaat om de belasting van de arduino-spanningsregelaar. Als je arduino en realaiskaart allebei parallel met 5V voedt maakt het niet zoveel uit.

    EDIT: dit klopt dus niet! Bij meting blijkt één relaisspoel ruim 60 mA te trekken!
    Dus als je ze via de arduino spanningsregelaar voed mogen er maar hoogstens 2 tegelijk ingeschakeld zijn.

    Maar de output naar de kaart (dus de primaire kant van de optocoupler) krijgt maar ongeveer 1 mA te verwerken, dus ruim binnen de limiet (40 mA)
     
    Laatst bewerkt: 23 jan 2022
  7. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.287
    Locatie:
    Boskoop
    Ik zie trouwens in jouw code ook niet de SoftwareSerial library installatie, zoals HIER, en het creëren van een "instance", in het voorbeeld BTserial genaamd.
    Ik heb er geen ervaring mee, heb je een ander voorbeeld gevolgd?
     
  8. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.287
    Locatie:
    Boskoop
    Voor de motoren:
    if ( t == 'A') {
    digitalWrite ( 14, LOW);
    }
    else digitalWrite ( 14,HIGH);

    EDIT: deze constructie werkt alleen als er continue een codeletter 'A' verzonden wordt
     
    Laatst bewerkt: 27 jan 2022
  9. Marc w

    Marc w

    Lid geworden:
    10 feb 2013
    Berichten:
    3.281
    Locatie:
    Turnhout belgie
    Niet te snel Max ben nog maar een beginneling.:confused:
    gebruik nu de serial monitor om te testen, probleem1 heeft me al 2 avonden gekost eer ik zover was voor ik wist waarom de kaart zo gek deed, ik had in het begin ook pin 2 nog in gebruik ipv 5.
    waardoor in het begin alles flipperde :)
    ik bestudeer de volgende avonden je voorstellen en laat zeker nog een antwoord.
     
  10. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.287
    Locatie:
    Boskoop
    Ik kom nog even terug op het feit dat je een relais met LOW moet aansturen om het te activeren. Na diverse dingen daarover gelezen te hebben (en heel veel mensen blijken zich daarover te verwonderen) begrijp ik nu dat dat met opzet zo ontworpen is. Tijdens het opstarten van de arduino is er namelijk een kort moment dat alle pins zwevend zijn ergens tussen Vcc en GND, en kunnen dan als HIGH door de relaismodule geïnterpreteerd worden, waardoor de relais kort aangetrokken zouden worden. Dit kan tot onveilige situaties leiden, omdat relais als standaard in niet-aangetrokken positie veilig horen te zijn.
    Het wordt dan nog erger als de betrokken uitgang daarbij niet in de setup gelijk als LOW gezet wordt, waardoor het betrokken relais pas elders in het programma op veilig gezet wordt.

    Om die reden is LOW gekozen om een relais te activeren, omdat die status actief in het programma gecreëerd moet worden.
     
    Marc w vindt dit leuk.
  11. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.287
    Locatie:
    Boskoop
    Ik had al eerder geschreven dat ik geen ervaring met bluetooth heb. Ik ben ook niet van plan om me er erg in te verdiepen, maar ik heb me toch een klein beetje ingelezen.
    Het komt erop neer dat je tekst of enkele karakters naar de arduino kunt sturen, welke dan een actie teweeg brengen. Het is mij niet duidelijk of de arduino-loop dan één keer doorloopt en dan weer stopt totdat een nieuwe tekst doorgestuurd wordt, maar als dat het geval is kun je het voorbeeld dat ik in post #5 gaf vereenvoudigen tot een simpel "if"command, met daarin iets als:

    if (t=='a') {
    SCHAKEL = !SCHAKEL; // true wordt false of false wordt true
    digitalWrite (poortnummer, SCHAKEL);
    }

    De versie die ik eerder voorstelde is nodig als je een continue stroom data binnenkrijgt, zoals bijvoorbeeld de pulsen uit een RC-ontvanger.

    Het is mij nog niet duidelijk hoe jij de motoren aan wil sturen, wat wordt er verzonden als je de "drukknoppen moet vasthouden" zoals je zelf noemde?
     
  12. Marc w

    Marc w

    Lid geworden:
    10 feb 2013
    Berichten:
    3.281
    Locatie:
    Turnhout belgie
    eerste stuk is ondertussen een feit, de 8 relais gaan aan en uit door dezelfde code te sturen via de seriële poort.
    Voor zover ik het begrijp gedraagd de bleuthoot verbinding net hetzelfde want om je schets op te laden moet je de H06 loskoppelen.
    We zullen het straks weten wat dat testen staat op het programma deze avond.
    de voorlopige code die momenteel werkt:

    bool SCHAKEL;
    bool VLAG;
    bool SCHAKEL1;
    bool VLAG1;
    bool SCHAKEL2;
    bool VLAG2;
    bool SCHAKEL3;
    bool VLAG3;
    bool SCHAKEL4;
    bool VLAG4;
    bool SCHAKEL5;
    bool VLAG5;
    bool SCHAKEL6;
    bool VLAG6;
    bool SCHAKEL7;
    bool VLAG7;

    char t;


    void setup() {
    Serial.begin(9600);
    pinMode(14, OUTPUT); // relais 1
    pinMode(15, OUTPUT); // relais 2
    pinMode(16, OUTPUT); // relais 3
    pinMode(17, OUTPUT); // relais 4
    pinMode(18, OUTPUT); // relais 5
    pinMode(19, OUTPUT); // relais 6
    pinMode(5, OUTPUT); // relais 7
    pinMode(6, OUTPUT); // relais 8

    digitalWrite(14, HIGH); //relais off
    digitalWrite(15, HIGH); //relais off
    digitalWrite(16, HIGH); //relais off
    digitalWrite(17, HIGH); //relais off
    digitalWrite(18, HIGH); //relais off
    digitalWrite(19, HIGH); //relais off
    digitalWrite(5, HIGH); //relais off
    digitalWrite(6, HIGH); //relais off
    VLAG = false;
    SCHAKEL = true;
    VLAG1 = false;
    SCHAKEL1 = true;
    VLAG2 = false;
    SCHAKEL2 = true;
    VLAG3 = false;
    SCHAKEL3 = true;
    VLAG4 = false;
    SCHAKEL4 = true;
    VLAG5 = false;
    SCHAKEL5 = true;
    VLAG6 = false;
    SCHAKEL6 = true;
    VLAG7 = false;
    SCHAKEL7 = true;
    }

    void loop() {


    if (Serial.available()) { // bluthoot aansuring lezen en printen
    t = Serial.read();
    Serial.println(t);
    }
    if (t == 'a') { //relais 1
    VLAG = true;
    }
    if (VLAG == true) {
    SCHAKEL = !SCHAKEL; // true wordt false of false wordt true
    digitalWrite (14, SCHAKEL);
    VLAG = false; // voorkomt dat de poort heen en weer blijft schakelen
    }
    if (t == 'b') { //relais 2
    VLAG1 = true;
    }
    if (VLAG1 == true) {
    SCHAKEL1 = !SCHAKEL1;
    digitalWrite (15, SCHAKEL1);
    VLAG1 = false;
    }
    if (t == 'c') { //relais 3
    VLAG2 = true;
    }
    if (VLAG2 == true) {
    SCHAKEL2 = !SCHAKEL2;
    digitalWrite (16, SCHAKEL2);
    VLAG2 = false;
    }
    if (t == 'd') { //relais 4
    VLAG3 = true;
    }
    if (VLAG3 == true) {
    SCHAKEL3 = !SCHAKEL3;
    digitalWrite (17, SCHAKEL3);
    VLAG3 = false;
    }
    if (t == 'e') { //relais 5
    VLAG4 = true;
    }
    if (VLAG4 == true) {
    SCHAKEL4 = !SCHAKEL4;
    digitalWrite (18, SCHAKEL4);
    VLAG4 = false;
    }
    if (t == 'f') { //relais 6
    VLAG5 = true;
    }
    if (VLAG5 == true) {
    SCHAKEL5 = !SCHAKEL5;
    digitalWrite (19, SCHAKEL5);
    VLAG5 = false;
    }
    if (t == 'g') { //relais 7
    VLAG6 = true;
    }
    if (VLAG6 == true) {
    SCHAKEL6 = !SCHAKEL6;
    digitalWrite (5, SCHAKEL6);
    VLAG6 = false;
    }
    if (t == 'h') { //relais 8
    VLAG7 = true;
    }
    if (VLAG7 == true) {
    SCHAKEL7 = !SCHAKEL7;
    digitalWrite (6, SCHAKEL7);
    VLAG7 = false;
    }

    }


    Hopelijk werkt ie straks ook nog, we zien wel .... :)
     
  13. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.287
    Locatie:
    Boskoop
    :thumbsup:
    Ik denk dat je op deze manier alle VLAGgen kunt verwijderen (strijken? :D), en de vergelijking rechtstreeks in het if-commando kunt zetten, zie mijn vorige post. Ze zijn alleen maar nodig in combinatie met de while-loop, indien je een continue stroom van dezelfde code als input krijgt, en je niet wilt dat je output mee gaat flipperen.
     
  14. Marc w

    Marc w

    Lid geworden:
    10 feb 2013
    Berichten:
    3.281
    Locatie:
    Turnhout belgie
    dacht dat ik dat geprobeerd had, werkt bij 1 schakeling maar niet met 8 achter elkaar.
    Maar doe nog wel eens een poging, ik zie het als een manier van te leren door te experimenteren :)
    we zien wel wat er gebeurd maar eerst de H06 werkend krijgen
     
  15. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.287
    Locatie:
    Boskoop
    Ik heb voor mezelf ook een sketch aangemaakt, gebaseerd op jouw code. Voornamelijk om het serieel zenden van karakters uit te proberen, maar ook om de werking van de sketch te bestuderen/becommentariëren.
    Schermafbeelding 2022-01-26 om 11.17.41.png
    Om maar van onderaf te beginnen: Ik heb een paar seriële print opdrachten toegevoegd om het effect op de status te kunnen zien in de seriële monitor, zodat ik niet de relaismodule aan hoef te sluiten.

    Ik heb uitgevoerd wat mijn laatste commentaar hiervoor was, de letterherkenning direct in de if-statement, geen vlaggen nodig.

    Ik heb geconstateerd dat de "if ((Serial.available())" statement niets toevoegt, de loop draait toch gewoon door, ook als er geen input aangeboden wordt. Dat heeft verder geen effect omdat het laatst ingelezen karakter een zogenoemd null-character is wat de verzonden string afsluit, en dus niet overeenkomt met één van de selectie karakters om een relais om te schakelen.

    Wat ik wèl weer toegevoegd heb is de while loop. Deze zorgt ervoor dat de loop() code stopt (eigenlijk blijft hangen in de while loop) zodra er geen input aangeboden wordt, om het lezen van de seriële output te vergemakkelijken.
    Ook hier zie je dat de printopdrachten in regel 36 twee keer uitgevoerd worden, de tweede keer met een blanco waarde van variabele "t". Dat is dus dat null-character, en je kunt dus ook zien dat dat geen effect heeft op de relais-standen. Ook goed te zien is dat ook gecombineerde input werkt.

    Schermafbeelding 2022-01-26 om 11.41.02.png

    Groet,
    Max.
     
    Laatst bewerkt: 26 jan 2022
  16. Marc w

    Marc w

    Lid geworden:
    10 feb 2013
    Berichten:
    3.281
    Locatie:
    Turnhout belgie
    test van gisteravond was niet zo een succes, als ik via seriële monitor testte was de werking perfect.
    Zodra ik de bleuthoot verbinding activeerde verliep de werking vrij gestoord.
    werking was vreemd, telkens bij de volgende opdracht ging de vorige terug uit maar soms gebeurde er nog totaal iets anders,
    tweemaal dezelfde drukknop achterelkaar gebruiken lukte al hele maal niets op.
    net voor ik ben gaan slapen nog net nieuw MITapp geschreven met 2drukknoppen 1 relais aan /uit en dat werkte wel perfekt.
    deze avond nog wat verder experimenteren.

    Ik kan de RX en TX van de H06 en arduino verbinden en heb dan geen extra code nodig , de serielee poort van de arduino word dan wel afgesloten ( helaas want ik kan nu wel niet controleren welk signaal binnen komt.
    Heb wel een vb gevonden op het net om TX en RX via een andere pin te koppelen en dan kan de seriele poort wel open blijven.
    Heb dus nog wel wat mogelijkheden om te testen.
    hoop dat het wat duidelijk is wat ik alle maal schrijf.
    alvast bedankt voor de blijvende reactie, met jouw hulp ga ik er uiteindelijk wel uitkomen :)

    vgr Marc
     
  17. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.287
    Locatie:
    Boskoop
    Het is allemaal duidelijk wat je schrijft Marc. Ik ken de app totaal niet, maar ik heb eens nagedacht hoe dat zou kunnen werken als je een drukknop ingedrukt moet houden om bijvoorbeeld een motor te laten draaien. Ik denk dat er dan zowel bij het indrukken als bij het loslaten een code via de seriële poort gestuurd wordt. Dat zouden dan twee verschillende letters moeten zijn, één voor het permanent inschakelen en de andere voor het permanent uitschakelen.
    De gewijzigde code zou dan zijn:
    if (t == 'a') {
    digitalWrite (14, LOW);

    if (t == 'b') {
    digitalWrite (14, HIGH);

    De andere mogelijkheid is dat de drukknop voortdurend eenzelfde code uitstuurt tijdens het indrukken. En aangezien de relais nu heen en weer schakelen met elke nieuwe code zullen we dan de arduino sketch aan moeten passen zodat de motor bij het wegblijven van die code uitschakelt.

    Inderdaad, als je een andere pin voor de bluetooth kunt instellen heb je een mogelijkheid om de input met de standaard seriële monitor te kunnen controleren. Dat zal dan waarschijnlijk inhouden dat je een SoftwareSerial library moet aanroepen zoals in DIT voorbeeld.
     
  18. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.287
    Locatie:
    Boskoop
    Het lijkt er op dat de MIT app inderdaad afzonderlijke functies heeft voor indrukken en loslaten:
    Schermafbeelding 2022-01-26 om 15.02.24.png
    Dit voorbeeld doet totaal iets anders, maar het lijkt mij dan mogelijk om twee verschillende cijfers of letters via bluetooth te versturen.
     
    Marc w vindt dit leuk.
  19. Marc w

    Marc w

    Lid geworden:
    10 feb 2013
    Berichten:
    3.281
    Locatie:
    Turnhout belgie
    Yes,
    we hebben een eerste werkende schets voor de bediening van 8 relais met aansturing door de gsm via bleuthoot verbinding.
    uiteraard met wat hulp van Max waarvoor dank.

    deel 1 de arduino schets

    char t;

    void setup() {
    Serial.begin(9600);
    pinMode(14, OUTPUT); // relais 1
    pinMode(15, OUTPUT); // relais 2
    pinMode(16, OUTPUT); // relais 3
    pinMode(17, OUTPUT); // relais 4
    pinMode(18, OUTPUT); // relais 5
    pinMode(19, OUTPUT); // relais 6
    pinMode(5, OUTPUT); // relais 7
    pinMode(6, OUTPUT); // relais 8

    digitalWrite(14, HIGH); //relais off
    digitalWrite(15, HIGH); //relais off
    digitalWrite(16, HIGH); //relais off
    digitalWrite(17, HIGH); //relais off
    digitalWrite(18, HIGH); //relais off
    digitalWrite(19, HIGH); //relais off
    digitalWrite(5, HIGH); //relais off
    digitalWrite(6, HIGH); //relais off
    }

    void loop() {


    if (Serial.available()) { // bluthoot aansuring lezen en printen
    t = Serial.read();
    Serial.println(t);
    }
    if (t == 'A') { //relais 1 aan-uit
    digitalWrite(14, LOW);
    }
    if ( t == 'a') {
    digitalWrite ( 14, HIGH);
    }
    if (t == 'B') { //relais 2 aan-uit
    digitalWrite(15, LOW);
    }
    if ( t == 'b') {
    digitalWrite ( 15, HIGH);
    }
    if (t == 'C') { //relais 3 aan-uit
    digitalWrite(16, LOW);
    }
    if ( t == 'c') {
    digitalWrite ( 16, HIGH);
    }
    if (t == 'D') { //relais 4 aan-uit
    digitalWrite(17, LOW);
    }
    if ( t == 'd') {
    digitalWrite ( 17, HIGH);
    }
    if (t == 'E') { //relais 5 aan-uit
    digitalWrite(18, LOW);
    }
    if ( t == 'e') {
    digitalWrite ( 18, HIGH);
    }
    if (t == 'F') { //relais 6 aan-uit
    digitalWrite(19, LOW);
    }
    if ( t == 'f') {
    digitalWrite ( 19, HIGH);
    }
    if (t == 'G') { //relais 7 aan-uit
    digitalWrite(5, LOW);
    }
    if ( t == 'g') {
    digitalWrite ( 5, HIGH);
    }
    if (t == 'H') { //relais 8 aan-uit
    digitalWrite(6, LOW);
    }
    if ( t == 'h') {
    digitalWrite ( 6, HIGH);
    }
    }

    deel 2 de foto's van MITapp
    de eerste foto is het programma gedeelte waarin je Links het stuk ziet om de bleuthoot verbinding tot stand te brengen en te verbreken
    op de gsm layout de mauve knoppen

    Rechts alle drukknoppen en de code die ze naar de arduino zenden bij indrukken.
    Ik heb wel voor elk relais 1 knop ( groen) moeten voorzien om in te schakelen en 1 knop ( rood) om uit te schakelen.
    in foto 2 de layout op de gsm toont dit duidelijker.


    MITapp blokken test1.jpg
    MITapp ontwerp test1.jpg

    uiteraard is dit niet het einde maar net het begin, De volgende avonden ga ik nog wat andere zaken testen waaronder natuurlijk de aanbevelingen van Max maar ook nog wat eigen gedachten kronkels. Ik kom dus zeker nog terug met test resultaten en/of bevindingen.

    tot later, Marc
     
  20. Marc w

    Marc w

    Lid geworden:
    10 feb 2013
    Berichten:
    3.281
    Locatie:
    Turnhout belgie
    en dan gaat het plots sneller dan verwacht, onze opzet 8 relais met 8 drukknoppen op de gsm via arduino aansturen is plots een feit.
    hier onder nog eens alles op een rij.
    MITapp layoyt test 2.jpg MITapp blok test 2.jpg


    bool SCHAKEL1;
    bool SCHAKEL2;
    bool SCHAKEL3;
    bool SCHAKEL4;
    bool SCHAKEL5;
    bool SCHAKEL6;
    bool SCHAKEL7;
    bool SCHAKEL8;

    char t;

    void setup() {
    Serial.begin(9600);
    pinMode(14, OUTPUT); // relais 1
    pinMode(15, OUTPUT); // relais 2
    pinMode(16, OUTPUT); // relais 3
    pinMode(17, OUTPUT); // relais 4
    pinMode(18, OUTPUT); // relais 5
    pinMode(19, OUTPUT); // relais 6
    pinMode(5, OUTPUT); // relais 7
    pinMode(6, OUTPUT); // relais 8

    digitalWrite(14, HIGH); //relais off
    digitalWrite(15, HIGH); //relais off
    digitalWrite(16, HIGH); //relais off
    digitalWrite(17, HIGH); //relais off
    digitalWrite(18, HIGH); //relais off
    digitalWrite(19, HIGH); //relais off
    digitalWrite(5, HIGH); //relais off
    digitalWrite(6, HIGH); //relais off

    SCHAKEL1 = true;
    SCHAKEL2 = true;
    SCHAKEL3 = true;
    SCHAKEL4 = true;
    SCHAKEL5 = true;
    SCHAKEL6 = true;
    SCHAKEL7 = true;
    SCHAKEL8 = true;
    }
    void loop() {

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

    if (t=='A') { //relais 1 aan-uit
    SCHAKEL1 = !SCHAKEL1; // true wordt false of false wordt true
    digitalWrite (14, SCHAKEL1);
    }
    if (t=='B') { //relais 2 aan-uit
    SCHAKEL2 = !SCHAKEL2; // true wordt false of false wordt true
    digitalWrite (15, SCHAKEL2);
    }
    if (t=='C') { //relais 3 aan-uit
    SCHAKEL3 = !SCHAKEL3; // true wordt false of false wordt true
    digitalWrite (16, SCHAKEL3);
    }
    if (t=='D') { //relais 4 aan-uit
    SCHAKEL4 = !SCHAKEL4; // true wordt false of false wordt true
    digitalWrite (17, SCHAKEL4);
    }
    if (t=='E') { //relais 5 aan-uit
    SCHAKEL5 = !SCHAKEL5; // true wordt false of false wordt true
    digitalWrite (18, SCHAKEL5);
    }
    if (t=='F') { //relais 6 aan-uit
    SCHAKEL6 = !SCHAKEL6; // true wordt false of false wordt true
    digitalWrite (19, SCHAKEL6);
    }
    if (t=='G') { //relais 7 aan-uit
    SCHAKEL7 = !SCHAKEL7; // true wordt false of false wordt true
    digitalWrite (5, SCHAKEL7);
    }
    if (t=='H') { //relais 8 aan-uit
    SCHAKEL8 = !SCHAKEL8; // true wordt false of false wordt true
    digitalWrite (5, SCHAKEL8);
    }
    } }


    Je kan wel stellen dat het geheel eveneens een stuk compacter is geworden.
    de volgende avonden kunnen besteed worden aan het aansturen der motoren.
    vgr,Marc
     
    max z vindt dit leuk.

Deel Deze Pagina