[C, C ++, Python, JavaScript] L Chika mit Edison

Wenn es sich um einen eingebauten Er handelt, beginnen Sie mit L Chika.

Programm

Einführung der MRAA-Bibliothek

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

L Chika in C-Sprache

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)

L Chika in C ++

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)

L Chika in Python

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.

L Chika mit JavaScript

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.

Schaltkreis

Active High回路

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.

Experiment

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! !!

Active High実装

Nun, wenn ich das vorherige Programm starte ...

Video

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.

Video

Oh, ich bin in Schwierigkeiten.

Schaltung wiederholen

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

Active Low回路

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.

Active High実装

Der Zustand des tatsächlichen Experiments ist wie folgt.

Video

Zusammenfassung

Recommended Posts

[C, C ++, Python, JavaScript] L Chika mit Edison
RaspberryPi L Chika mit Python und C #
Remote L Chika mit Pigpio
Löse ABC163 A ~ C mit Python
Rufen Sie C von Python mit DragonFFI auf
Erstellen Sie Awaitable mit der Python / C-API
Löse ABC168 A ~ C mit Python
Probieren Sie L Chika mit Himbeerpi
AtCoder ABC 114 C-755 mit Python3 gelöst
Löse ABC167 A ~ C mit Python
Löse ABC158 A ~ C mit Python
L Chika mit Himbeer-Pi C #
4-Sprachen-Vergleich des Abschlusses (Python, JavaScript, Java, C ++)
[C] [Python] Lesen mit AquesTalk unter Linux
Verknüpfung von Python und JavaScript mit dem Jupiter-Notizbuch
Verwenden von C ++ - Funktionen aus Python mit pybind11
FizzBuzz in Python3
Scraping mit Python
Statistik mit Python
Scraping mit Python
Python mit Go
Twilio mit Python
In Python integrieren
Wickeln Sie C mit Cython für Python ein
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
Python C ++ Notizen
mit Syntax (Python)
Python, openFrameworks (c ++)
L Chika mit Sipeed Lichee Zero (GPIO-Betrieb)
Bingo mit Python
Zundokokiyoshi mit Python
Wrap C ++ mit Cython zur Verwendung von Python
Fordern Sie AtCoder (ABC) 164 mit Python heraus! A ~ C Problem
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
Einfaches Scraping mit Python (JavaScript / Proxy / Cookie-kompatible Version)
C-Sprache, Java, Python-Benchmarks mit Primfaktorisierung
Rufen wir Ihre eigene C ++ - Bibliothek mit Python auf (Einstellungen)
Machen Sie mit Python einen Haltepunkt auf der c-Ebene
Schreiben Sie mit Lambda (Python, JavaScript) mehrere Datensätze in DynamoDB.
Nehmen Sie Kontakt mit der funktionalen Programmierung in JavaScript oder Python 3 auf
Memo von "Cython beschleunigt Python durch Fusion mit C"
Vergleich von CoffeeScript mit JavaScript-, Python- und Ruby-Grammatik
Programmieren Sie überall mit Ihrem Smartphone! (Empfohlen für C-Sprache / Python)
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Python lernen mit ChemTHEATER 03