Search

Archives

Pages

Op mijn desktop:

Suggesties, commentaar, ... (klik of schrijf zelf:)e-mail webgang
Laatste titels:

WeDo 2.0 + ontdekking: onder de BYOR

WebGang blog ** August 19th, 2021 by wim.webgang **

We doen
We doen de WeDo nog eens over, maar nu met volwassenen.

Ontdekking
Nog een ontdekking als vervolg op een vorig radiolab waarin we BYOR bekeken..
Als je het witte BYOR Easyboard bord omdraait zie je onderaan een blauw bord zitten. Dat is een arduino. Eigenlijk is de(ze) BYOR een Arduino shield.
De originele broncode van het bord (met Nederlandse commentaar) zou bestaan uit: (maar ik krijg dat zo niet ingeladen+aan het werk):

EasyboardV3.ino

// nvdr webgang: declareren van de input variabelen en initialiseren op nul :
int input1 = 0;
int input2 = 0;
int input3 = 0;
int input4 = 0;
int input5 = 0;
int input6 = 0;
// nvdr webgang: zie hieronder het schema "cheat sheet" van de poortnummers tov de aansluitingen op het bord
int output1 = 3;
int output2 = 5;
int output3 = 6;
int output4 = 9;
int output5 = 10;
int output6 = 11;
// nvdr webgang: A= analoog?
//
void setup() {
//
// Alle input-pinnen als input definieren
pinMode(A0, INPUT);
pinMode(A1, INPUT);
pinMode(A2, INPUT);
pinMode(A3, INPUT);
pinMode(A4, INPUT);
pinMode(A5, INPUT);
//
// Alle output-pinnen als output definieren
pinMode(output1, OUTPUT);
pinMode(output2, OUTPUT);
pinMode(output3, OUTPUT);
pinMode(output4, OUTPUT);
pinMode(output5, OUTPUT);
pinMode(output6, OUTPUT);
//
}
//
void loop() {
//
//Alle input-poorten uitlezen
input1 = analogRead(A5);
input2 = analogRead(A4);
input3 = analogRead(A3);
input4 = analogRead(A2);
input5 = analogRead(A1);
input6 = analogRead(A0);
//
// nvdr webgang: het mappen neemt de invoer van een poort tussen min en max waarde en zet die om naar een voor de uitvoer relevante schaal van min en max waarde
// Dit stukje zorgt ervoor dat de poortjes met elkaar kunnen praten - het uitgelezen signaal wordt een signaal wat de output-poort begrijpt en wordt mappedInput genoemd
//--------------------------------------------------------------------
int mappedInput1 = map(input1,25,1000,0,255);
mappedInput1 = constrain(mappedInput1, 0, 255);
int mappedInput2 = map(input2,25,1000,0,255);
mappedInput2 = constrain(mappedInput2, 0, 255);
int mappedInput3 = map(input3,25,1000,0,255);
mappedInput3 = constrain(mappedInput3, 0, 255);
int mappedInput4 = map(input4,25,1000,0,255);
mappedInput4 = constrain(mappedInput4, 0, 255);
int mappedInput5 = map(input5,25,1000,0,255);
mappedInput5 = constrain(mappedInput5, 0, 255);
int mappedInput6 = map(input6,25,1000,0,255);
mappedInput6 = constrain(mappedInput6, 0, 255);
//---------------------------------------------------------------------
//
//Op alle output-poorten schrijven wat er op de input-poorten binnenkomt
analogWrite(output1, mappedInput1);
analogWrite(output2, mappedInput2);
analogWrite(output3, mappedInput3);
analogWrite(output4, mappedInput4);
analogWrite(output5, mappedInput5);
analogWrite(output6, mappedInput6);
//
}

Het gevolg is dat je een analoge meting hebt op de ingangen, en een analoge uitvoer/sturing op de uitgangen.
Nadeel daarvan: als er een “beetje” invoer wordt gevoeld, wordt er een “beetje” uitvoer gegeven, continue, wat de uitvoer warm kan doen lopen (motor bv).

Eigenaardig dat soms van 0-5 geteld wordt, en soms van 1-6.

De poorten cheat sheet heet “Cheatsheet.pdf” en kan/kon je downloaden van https://www.byor.nl/en/support/
Het komt erop neer dat A=ingang en het getal is uitgang:

A0 - 3
A1 - 5
A2 - 6
A3 - 9
A4 - 10
A5 - 11

In principe zou je de arduino dus kunnen laden met een aangepaste versie van stuursoftware. Bv:

A0 in wordt evenredig uit (zoals het nu is )
A1 in wordt evenredig uit (zoals het nu is )
A2 in wordt omgekeerd evenredig uit
A3 in wordt omgekeerd evenredig uit
A4 in schakelt vanaf bepaalde waarde uit (met bepaalde waarde)
A5 in schakelt vanaf bepaalde waarde uit (met bepaalde waarde)

Of je zou voor een vaste installatie een tijdsinterval kunnen voorzien waarmee iets loopt/herhaald wordt.

Lift ^ | Lift v | Comments Off

Comments are closed.