Wenn es sich um einen eingebauten Er handelt, beginnen Sie mit L Chika.
Zur Steuerung von Edisons E / A stellt Intel [eine abstrakte Bibliothek namens MRAA] zur Verfügung (http://iotdk.intel.com/docs/master/mraa/). Klicken Sie hier für den Quellcode. Diese Bibliothek wird bereits unmittelbar nach dem Kauf oder beim Schreiben einer von Intel ausgegebenen Binärdatei installiert und kann ohne Verwendung verwendet werden. Wenn Sie Linux selbst installiert haben, z. B. ubilinux, ** installieren Sie zuerst die neueste Version von swig von GitHub ** und dann mraa Bitte installiere.
(\ # Ist ein Befehl, der mit Administratorrechten ausgeführt werden soll) \ # opkg install git cmake # Für Yocto Linux \ # apt-get install git cmake autoconf byacc yodl # Für Debian $ git clone https://github.com/swig/swig.git $ cd swig $ ./autogen.sh $ ./configure $ make # make install $ cd ../../
$ git clone https://github.com/intel-iot-devkit/mraa.git $ cd mraa $ mkdir build $ cd build $ cmake -DBUILDSWIGNODE=OFF .. $ make # make install
Die Erklärung der API lautet hier. Das Beispiel ist hier.
led_c.c
#include <stdio.h>
#include <unistd.h>
#include <mraa.h>
int main(int argc, char *argv[])
{
mraa_result_t ret;
//MRAA-Initialisierungsprozess (Hardware-Identifikation)
mraa_init();
//Ausgabe der MRAA-Version
fprintf(stdout, "Hello mraa.\nVersion: %s\n", mraa_get_version());
//MRAA-Port 20(=Breakout Board J18-7 Pin)Initialisieren
mraa_gpio_context gpio;
gpio = mraa_gpio_init(20);
if(gpio == NULL){
return 1;
}
//Stellen Sie den Port auf Ausgabe ein
ret = mraa_gpio_dir(gpio, MRAA_GPIO_OUT);
if(ret != MRAA_SUCCESS){
return 1;
}
int i;
for(i=0;i<10;i++){
//1 am Hafen(H Spannung)Ausgabe
mraa_gpio_write(gpio, 1);
usleep(1000*1000);
//0 am Port(L Spannung)Ausgabe
mraa_gpio_write(gpio, 0);
usleep(1000*1000);
}
//Stellen Sie den Port auf Eingang ein
mraa_gpio_dir(gpio, MRAA_GPIO_IN);
//MRAA-Kündigungsprozess
mraa_deinit();
return ret;
}
Erstellen Sie dies mit dem folgenden Makefile.
Makefile
CC = g++
MRAALIBS = -lmraa
.PHONY: all clean led_c led_cpp
all: led_c led_cpp
clean:
rm -f ./*.o
rm -f led_c led_cpp
led_c: led_c.o
$(CC) -O4 $(MRAALIBS) -o $@ $^
led_cpp: led_cpp.o
$(CC) -O4 $(MRAALIBS) -o $@ $^
%.o: %.c
$(CC) -Wall -g -c $<
Wenn Sie ** make ** ausführen, wird eine ausführbare Datei mit dem Namen led_c generiert.
# ./led_c Ausführen mit. (Erfordert Administratorrechte)
Die Erklärung der API lautet hier. Das Beispiel ist hier. Was wir im Inneren tun, ist fast dasselbe wie das der C-Sprache.
led_cpp.cpp
#include <stdio.h>
#include <unistd.h>
#include <mraa/gpio.hpp>
#include <mraa/common.hpp>
int main(int argc, char *argv[])
{
mraa_result_t ret;
fprintf(stdout, "Hello mraa.\nVersion: %s\n", mraa_get_version());
mraa::Gpio *gpio = new mraa::Gpio(20);
if(gpio == NULL){
return MRAA_ERROR_UNSPECIFIED;
}
ret = gpio->dir(mraa::DIR_OUT);
if(ret != MRAA_SUCCESS){
mraa::printError(ret);
return 1;
}
for(int i=0;i<5;i++){
gpio->write(1);
usleep(1000*1000);
gpio->write(0);
usleep(1000*1000);
}
gpio->dir(mraa::DIR_IN);
delete gpio;
return ret;
}
Makefile ist dasselbe wie das der C-Sprache. Eine ausführbare Datei mit dem Namen led_cpp wird generiert.
# ./led_cpp Ausführen mit. (Erfordert Administratorrechte)
Das Beispiel ist hier. Was wir im Inneren tun, ist fast das gleiche wie das von C / C ++.
led_py.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import mraa
import time
print("Hello mraa\nVersion: %s" % mraa.getVersion())
gpio = mraa.Gpio(20)
gpio.dir(mraa.DIR_OUT)
for i in range(5):
gpio.write(1)
time.sleep(1)
gpio.write(0)
time.sleep(1)
gpio.dir(mraa.DIR_IN)
Nach dem Erstellen der Datei $ chmod +x ./led_py.py
Geben Sie dann die Ausführungserlaubnis.
# ./led_py.py Sie können es mit tun.
Das Beispiel ist hier. Was wir im Inneren tun, ist fast das gleiche wie das von C / C ++ / Python.
led_js.js
var m = require("mraa");
console.log("Hello mraa.\nVersion: " + m.getVersion());
var gpio = new m.Gpio(20);
gpio.dir(m.DIR_OUT);
var state = true;
var counter = 20;
periodicActivity();
function periodicActivity(){
gpio.write(state?1:0);
state = !state;
if(counter--)
setTimeout(periodicActivity, 1000)
}
# node ./led_js.js Sie können es mit tun.
Edisons GND-Pin (J19-3) scheint mit der inneren Schicht GND verbunden zu sein, daher ist das Löten sehr schwierig. Es wird empfohlen, einen kooperativen Lötkolben mit 30 [W] oder höher zu verwenden.
Lassen Sie uns nun tatsächlich verkabeln und experimentieren. Aus Gründen der Übersichtlichkeit habe ich die Kabel direkt auf die Breakout-Platine gelötet (ausgeschnitten). Wenn Sie ein Folgeexperiment durchführen, ist dies gefährlich. Löten Sie es daher bitte richtig! !!
Nun, wenn ich das vorherige Programm starte ...
Das? Es ist irgendwie dunkel ...
Dies sollte der Fall sein, und Edison kann nur Signale mit einem Spannungspegel von 1,8 [V] ausgeben. LEDs mit Farben wie Rot und Grün leuchten schwach, da die Vorwärtseffektspannung (VF) niedrig ist, aber blaue und weiße LEDs können nicht sehr stark angesteuert werden. Das folgende Video ist das, mit dem ich tatsächlich experimentiert habe.
Oh, ich bin in Schwierigkeiten.
Wenn Sie nur 1,8 [V] mit H-Spannung ausgeben können, erstellen Sie eine Schaltung. Die vorherige Schaltung wurde als Active High bezeichnet. Dabei fließt Strom zur Last (in diesem Fall LED), wenn 1 an den Port ausgegeben wird. Wenn jedoch 0 an den Port ausgegeben wird, der als Active Low bezeichnet wird, fließt der Strom zur Last. Wechseln Sie zu einem Stromkreis, in dem
Auf diese Weise empfängt die LED bei der Ausgabe von 1 an den Port 1,5 [V] von 3,3 bis 1,8, und wenn diese niedriger als die Durchlassspannung der LED ist, leuchtet die LED kaum auf. Wenn dann 0 an den Port ausgegeben wird, wird eine Spannung von 3,3 [V] an die LED angelegt und die LED leuchtet auf.
Der Zustand des tatsächlichen Experiments ist wie folgt.
Recommended Posts