Arduino uno via usb input of output laten schakelen.

Hardware geleverd door Arduino
Berichten: 17
Geregistreerd: 05 Mei 2023, 10:13
Woonplaats: Dalfsen

Arduino uno via usb input of output laten schakelen.

Berichtdoor frans36 » 21 Jun 2023, 15:25

Beste mede forumers,

Hierbij heb ik even het volgende.
Is het mogelijk om via een arduino uno via de USB port een input of een output hoog dan wel laag te maken op het arduino uno board.

Ik heb een stukje software op de pc in gebruik die schakelaartjes in het scherm aan of uit kan zetten.
deze communicatie zou dan via de usb port naar buiten komen de arduino uno in.
en dan zou der dus een pin dan wel hoog of laag gemaakt mogen worden.
Nu is mijn vraag of dit zeg maar zo mogelijk is?

Graag hoor ik van de gene die dit weet en de info met mij zou willen delen.

Bij voorbaat mijn dank.

Mvg,
Frans36

Advertisement

Berichten: 62
Geregistreerd: 05 Feb 2023, 13:30

Re: Arduino uno via usb input of output laten schakelen.

Berichtdoor sterretjeToo » 21 Jun 2023, 15:43

Dat is zeker mogelijk. Je moet seriële communicatie aan je PC programma toevoegen zodat je commandos naar deArduino kunt sturen en een bijbehorend programma schrijven voor de Uno die die commandos begrijpt en omzet naar pinnen en nivos.

Bv
Code: Alles selecteren
<2:1>

Om pin 2 hoog te maken.

Code: Alles selecteren
<2:0,3:1>

Om pin 2 laag te maken en pin 3 hoog te maken.

Voor het gegeven voorbeeld kun je aan de Arduino kant https://forum.arduino.cc/t/serial-input-basics-updated/382007 lezen. Je kunt dit testen met de Seriele monitor en als het goed werkt the PC kant invullen.

Er zijn ook andere mogelijkheden, bv binary commandos versturen; dat is echter ietsje moeilijker testen omdat de seriële monitor alleen tekst kan versturen.

PS
Wees je ervan bewust dat als je een seriëele poort opent op de PC, een Uno door een reset gaat en niet direct commandos kan ontvangen. Je moet even wachten of doen zoals het gedaan is in de gegeven link waar data naar der PC wordt gestuurd (in setup()) zodat het PC programma weet dat data verstuurd kan worden.

Berichten: 17
Geregistreerd: 05 Mei 2023, 10:13
Woonplaats: Dalfsen

Re: Arduino uno via usb input of output laten schakelen.

Berichtdoor frans36 » 21 Jun 2023, 19:31

Hallo SterretjeToo,

Bedankt als eerst voor uw snelle reactie.
ik heb zojuist even geprobeert de eerste sketch en het stukje software uit uw aangegeven stuk te proberen.
via de seriel monitor zie ik als ik de tekst bijvoorbeeld type Hello world!!
dan zie ik deze als ik het goed zeg terug komen met THIS JUST IN...... hello world!!.
ik zie ook tevens de 2 rode ledjes op het uno board gaan knipperen bij RX en TX.

Nu voor een test zou ik graag een ledje pakken en een weerstandje van zeg 220ohm
en 5 volt naar het ledje dan zou der 15mA over het ledje staan.

Is het dan simpel in de software te zeggen dat bijvoorbeeld pin 2 hoog gemaakt mag worden zodat het ledje dan gaat
branden als deze is aangesloten met een weerstandje a 220ohm en het andere pootje van de led naar de GND.

Als ik dan in de serial monitor een commando geef dat de led dan aan gaat en weer een commando dat de led uit gaat.

zodat ik dan ook werkelijk kan zien dat dit werkt.
elke vorm van input qua software regels is welkom.

Mvg,

Frans36

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Arduino uno via usb input of output laten schakelen.

Berichtdoor shooter » 24 Jun 2023, 13:22

begin eens met het programma blink (dat is een voorbeeld) en je kunt ook processing gebruiken als het ingewikkelder wordt
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: Arduino uno via usb input of output laten schakelen.

Berichtdoor Gij Kieken » 24 Jun 2023, 18:28

Bijgevoegd een heel eenvoudig test programaatje voor communicatie via Usb.
In de serial monitor typ je bijvoorbeeld 1 en dan Enter ofwel 0 en dan Enter.
Veel plezier bij het experimenteren.
Code: Alles selecteren
/*
   Gij Kieken 24/06/2023
   Little program to control a Led via Usb.
   Suitable for Uno or Nano.
   Using the serial monitor to experiment.
*/
const byte LED = 13; //We gerbruiken de ingebouwde led voor het gemak
// Als je een andere output port wilt gebruiken,
// Neem dan een Led met serie weerstand 470ohm,
// Kathode aan Gnd en Anode via weerstandje aan je poort naar keuze.
// Voorbeeld poort 2, const byte LED=2;

char data;//Nodig om het binnenkomende character te lezen

void setup() {
  Serial.begin(9600);//Opent je communicatie met b.v. je serial monitor
  pinMode(LED, OUTPUT); //Maak van je gekozen poort een uitgang
}

void loop() {
  if (Serial.available() > 0) { //Doe alleen iets als er iets in de Input buffer zit?
    data = Serial.read(); //Lees een Byte Data
    if (data == '1') {
      digitalWrite(LED, HIGH); //LED Aan
      Serial.println(" De LED is AAN ");//Print naar de serial monitor
    }
    else if (data == '0') {
      digitalWrite(LED, LOW); //LED Uit
      Serial.println(" De LED is nu UIT ");//Print naar de serial monitor
    }
  }
}

Berichten: 62
Geregistreerd: 05 Feb 2023, 13:30

Re: Arduino uno via usb input of output laten schakelen.

Berichtdoor sterretjeToo » 28 Jun 2023, 04:27

frans36 schreef:Is het dan simpel in de software te zeggen dat bijvoorbeeld pin 2 hoog gemaakt mag worden zodat het ledje dan gaat
branden als deze is aangesloten met een weerstandje a 220ohm en het andere pootje van de led naar de GND.

Als ik dan in de serial monitor een commando geef dat de led dan aan gaat en weer een commando dat de led uit gaat.


Dit is een aangepaste parseData voor voorbeeld 5 dat zal werken met bv <2:1>
Code: Alles selecteren
void parseData() {      // split the data into its parts

    char * strtokIndx; // this is used by strtok() as an index

    strtokIndx = strtok(tempChars, ":");
    pinNumber = atoi(strtokIndx);     // eerste deel is pin nummer

    strtokIndx = strtok(NULL, ":");
    pinStatus = atoi(strtokIndx);     // tweede deel is pin status (1 = hoog, 2 = laag
}

Je zult wel even de twee variabelen pinNumber en pinStatus moeten toevoegen aan het begin van je programma.


Je kunt nu showParsedData aanpassen om met pinNumber en pinStatus een pin te besturen
Code: Alles selecteren
void showParsedData() {
  digitalWrite(pinNumber, pinStatus);
}


Opmerking:
Om het tweede voorbeeld (<2:0,3:1>) te kunnen behandelen in Arduino is een stukje gecompliceerder. Je kunt ook <2:0><3:1> sturen vanuit de seriële monitor of je programma.

Terug naar Arduino hardware

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 43 gasten