# Aansturen digitale uitgang

In volgende voorbeeld wordt de interne led op het wemos D1R2 bord (met ESP 8266) in- en uitgeschakeld via het adafruit dashboard. Dit voorbeeld is eveneens bruikbaar voor de ESP32. In praktische toepassingen kan dit een motor zijn, een lamp ….

Blokschema

# Adafruit.IO gedeelte

# Feeds

Om een feed aan te maken is het nodig in te loggen op het adafruit.io platform.

io.adafruit.com (opens new window)

Kies “Feeds” en vervolgens “view all”.

Feeds

Een nieuwe feed aanmaken voor een digitale uitgang is mogelijk via “Create a New Feed”.

Nieuwe feed aanmaken

Vul de naam en de omschrijving van de feed in.

Nieuwe feed aanmaken

# Dashboard

Met een dashboard is het mogelijk de LED in- en uit te schakelen.

Om een dashboard aan te maken is het nodig in te loggen op het adafruit.io platform.

io.adafruit.com (opens new window)

Kies “Dashboards” en vervolgens “view all”.

Dashboard

Een nieuw dashboard aanmaken is mogelijk via “Create a New Dashboard”.

Nieuw dashboard

Vul de naam en de omschrijving van het dashboard in.

Invullen gegevens dashboard

Klik vervolgens op het aangemaakte dashboard.

Selecteren aangemaakt dashboard

Kies “Create a new block”.

Create a new block

De led bedienen we via een Toggle.

Bediening led

Selecteer de feed verbonden met de Toggle knop op het dashboard.

Keuze feed

Pas de instellingen van de toggle knop aan.

Aanpassen instellingen knop

# Arduino gedeelte

Vertrek van een voorbeeld. Hier adafruitio_07_digial_out. Dit voorbeeld is zowel bij de ESP32 als de ESP8266 bruikbaar.

Voorbeeld

Stel de config.h file in.

Instellen config.h file

#define IO_USERNAME   "your_username"
#define IO_KEY        "your_key"
1
2

De IO username en de IO key zijn te vinden in het adafruit.io platform onder AIO key.

AIO key

De IO_USERNAME is te vinden bij “Username” en IO_KEY is te vinden bij “Active Key”.

AIO key

Voor de communicatie met het wifinetwerk kan enkel gebruik gemaakt worden van WPA2 Personal. Geef de SSID van het wifi-netwerk en het paswoord in de config.h file in.

#define WIFI_SSID   "your_ssid"
#define WIFI_PASS   "your_pass"
1
2

De rest van de code komt in het .ino bestand.

keuze .ino bestand

De aan te sturen LED is de ingebouwde LED op de WEMOS D1-module. De ingebouwde LED is verbonden met pin 14. Stel LED_PIN in op 14 in.

// digital pin 14
#define LED_PIN 14
1
2

Geef de feed de gekozen naam uit het adafruit.io platform. In het voorbeeld is gekozen voor LED.

// set up the 'digital' feed
AdafruitIO_Feed *digital = io.feed("LED");
1
2

Totaal programma

// Adafruit IO Digital Output Example
// Tutorial Link: https://learn.adafruit.com/adafruit-io-basics-digital-output
//
// Adafruit invests time and resources providing this open source code.
// Please support Adafruit and open source hardware by purchasing
// products from Adafruit!
//
// Written by Todd Treece for Adafruit Industries
// Copyright (c) 2016 Adafruit Industries
// Licensed under the MIT license.
//
// All text above must be included in any redistribution.

/************************** Configuration ***********************************/

// edit the config.h tab and enter your Adafruit IO credentials
// and any additional configuration needed for WiFi, cellular,
// or ethernet clients.
#include "config.h"

/************************ Example Starts Here *******************************/

// digital pin 14
#define LED_PIN 14

// set up the 'digital' feed
// De feed methode geeft een pointer naar een object terug 
// en kent de pointer to aan digital.
AdafruitIO_Feed *digital = io.feed("LED");

void setup() {
  
  pinMode(LED_PIN, OUTPUT);
  
  // start the serial connection
  Serial.begin(115200);

  // wait for serial monitor to open
  while(! Serial);

  // connect to io.adafruit.com
  Serial.print("Connecting to Adafruit IO");
  io.connect();

  // set up a message handler for the 'digital' feed.
  // the handleMessage function (defined below)
  // will be called whenever a message is
  // received from adafruit io.
  digital->onMessage(handleMessage);

  // wait for a connection
  while(io.status() < AIO_CONNECTED) {
    Serial.print(".");
    delay(500);
  }

  // we are connected
  Serial.println();
  Serial.println(io.statusText());
  digital->get();

}

void loop() {

  // io.run(); is required for all sketches.
  // it should always be present at the top of your loop
  // function. it keeps the client connected to
  // io.adafruit.com, and processes any incoming data.
  io.run();

}

// this function is called whenever an 'digital' feed message
// is received from Adafruit IO. it was attached to
// the 'digital' feed in the setup() function above.
void handleMessage(AdafruitIO_Data *data) {

  Serial.print("received <- ");

  if(data->toPinLevel() == HIGH)
    Serial.println("HIGH");
  else
    Serial.println("LOW");


  digitalWrite(LED_PIN, data->toPinLevel());
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88

Via het dashboard kan de led bediend worden.

Resultaat

Via de feeds is het te controleren wanneer de led werd in-en uitgeschakeld.

Resultaat

# Opdracht

  • Stuur 2 externe leds aan.