Intel® planche à Edison : Clap activé horloge (5 / 6 étapes)

Étape 5: Code

Ce qui suit est du code C++ pour l’IDE Eclipse * pour Intel® Edison, installer et comment commencer : https://software.intel.com/en-us/installing-the-e...

/*

* Auteur : Dirk Roziers

* Copyright (c) 2015 Intel Corporation.

*

* L’autorisation est accordée par les présentes, gratuitement, à toute personne qui obtient

* une copie de ce logiciel et les fichiers de documentation associée (le

* "Logiciel"), pour faire face dans le logiciel sans restriction, y compris

* sans s’y limiter les droits d’utiliser, copier, modifier, fusionner, publier,

* distribuer, concéder en sous-licence, ou vendre des copies du logiciel et à

permis de personnes à qui le logiciel est fourni pour ce faire, sous réserve de

* les conditions suivantes :

*

* La mention de copyright ci-dessus et cette notification de permission doivent être

* inclus dans toutes les copies ou les parties importantes du logiciel.

*

* LE LOGICIEL EST FOURNI « TEL QUEL », SANS GARANTIE D’AUCUNE SORTE,

* EXPRESSE OU IMPLICITE, Y COMPRIS MAIS SANS S’Y LIMITER LES GARANTIES DE

* QUALITÉ MARCHANDE, D’ADEQUATION A UN USAGE PARTICULIER ET

* ABSENCE DE CONTREFAÇON. EN AUCUN CAS LES AUTEURS OU TITULAIRES DE DROIT D’AUTEUR SERA

* RESPONSABLE DE TOUTE RÉCLAMATION, DOMMAGE OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS UNE ACTION

* DE LA RESPONSABILITÉ CONTRACTUELLE, DÉLICTUELLE OU AUTRE, RÉSULTANT D’OU EN RELATION

* AVEC L’UTILISATION DU LOGICIEL OU AUTRES TRANSACTIONS DANS LE LOGICIEL.

*/

#include « mraa.h »

#include

#include

#include

int main (int argc, char ** argv)

{

time_t current_time ;

struct tm * time_info ;

timeString Char [9] ; espace pour "HH:MM:SS\0"

int heures, minutes, secondes ;

unsigned int temp_value, light_value, sound_value ;

int compteur = 1 ;

int display_on = 0 ;

unsigned int sound_threshold = 400 ;

float max_light_value = 800,0 ;

int number_of_sec_to_display_time = 10 ;

int number_of_sec_to_display_temp = 3 ;

résistance du flotteur ;

float temp_celcius ;

int temp_celcius_int ;

int temp_celcius_decimal_1 ;

int luminosité ;

mraa_aio_context temp_pin ;

mraa_aio_context light_pin ;

mraa_aio_context sound_pin ;

/ * valeur de chaque segment selon une représentation binaire dans Fiche technique

64

------

| |

2 | | 32

| 1 |

------

| |

4 | | 16

| |

------

8

index dans array = valeur du chiffre,

C’est à dire digit_value [5] = affiche 5 LED,

digit_value [7] = affiche 7 LED,

digit_value [10] = LED blanc

*/

int digit_value [] = {}

126, / * 2 + 4 + 8 + 16 + 32 + 64 * /

48, / * 16 + 32 * /

109, / * 1 + 4 + 8 + 32 + 64 * /

121, / * 1 + 8 + 16 + 32 + 64 * /

51, / * 1 + 2 + 16 + 32 * /

91, / * 1 + 2 + 8 + 16 + 64 * /

95, / * 1 + 2 + 4 + 8 + 16 + 64 * /

112, / * 16 + 32 + 64 * /

127, / * 1 + 2 + 4 + 8 + 16 + 32 + 64 * /

115, / * 1 + 2 + 16 + 32 + 64 * /

0

};

/*

* valeur binaire à envoyer plus de SPI à vvvv vvvv valeur d’affichage d’affichage à LED nnnn numéro est : 0000 nnnn vvvv vvvv

* par exemple affectant 5 LED de gauche (= 4 LED de droite) valeur 5 (= 91, voir ci-dessus = 10011011)--> pass 0000 0100 1011 1001

* décimale = 1024 (0000 0100 0000 0000) + 91 (0000 0000 1001 1011) = 1115

*/

int digit_position [] = {}

256, / * digit_position [0] = 8 chiffres = chiffres plus à droite, 256 = 0100 hex = 0000 0001 0000 0000 binaire * /

512, / * digit_position [1] = 7 chiffres = 2ème de droite, 512 = 0200 hex = 0000 0010 0000 0000 binaire * /

768, / * digit_position [2] = 6 chiffres * /

1024, / * digit_position [3] = 5 ème * /

1280, / * digit_position [4] = 4 chiffres * /

1536, / * digit_position [5] = 3ème chiffre * /

1792, / * digit_position [6] = 2e chiffre * /

2048 / * digit_position [7] = 1er chiffre = chiffre plus à gauche * /

/ * index dans array = 8 - position des chiffres sur l’afficheur ; la plupart des chiffres à gauche = position 1 * /

};

capteur de température sur analogique Pin0 (Aio0), capteur de lumière sur la Pin1 analogiques (Aio1) et son capteur sur Pin2 analogiques (Aio2)

temp_pin = mraa_aio_init(0) ;

light_pin = mraa_aio_init(1) ;

sound_pin = mraa_aio_init(2) ;

mraa_spi_context spi ;

SPI = mraa_spi_init(1) ;

Si (spi == NULL)

{

printf ("initialisation de spi a échoué, vérifiez syslog pour plus de détails, exit... \n") ;

sortie (1) ;

}

Cliquez sur Set fréquence à 400 kHz)

mraa_spi_frequency (spi, 400000) ;

mraa_spi_lsbmode (spi, 0) ;

La puce MAX7219/21 requiert les données en format word

Si (mraa_spi_bit_per_word (spi, 16)! = MRAA_SUCCESS)

{

printf ("ne pourrait pas définir SPI périphérique en mode 16 bits, sortie... \n") ;

sortie (1) ;

};

mraa_spi_write_word (spi, 0x0900) ; Pas décoder les bits

mraa_spi_write_word (spi, 0x0a0f) ; Luminosité des LED--le plus bas 0xa00, 0xa0f plus haut--la valeur plus élevée à commencer par

mraa_spi_write_word (spi, 0x0b07) ; Afficher toutes les lignes de balayage

mraa_spi_write_word (spi, 0x0c00) ; Afficher hors--commencer avec affichage.

mraa_spi_write_word (spi, 0x0f00) ; Testmode hors

while (true) {}

même si (display_on == 0) {}

détecter les sons pour allumer l’écran

sound_value = mraa_aio_read(sound_pin) ;

Si (sound_value > sound_threshold) {}

display_on = 1 ;

mraa_spi_write_word (spi, 0x0c01) ; Affichez sur

}

usleep(1000) ;

}

même si (display_on == 1)

{

temp_value = mraa_aio_read(temp_pin) ;

light_value = mraa_aio_read(light_pin) ;

Convertir temp_value lecture en Celcius en utilisant datashaeet - Bvalue du capteur = 3975

résistance = (1023 - temp_value) * 10000 / temp_value ; Obtenir la résistance du capteur

temp_celcius = (1 / (log(resistance / 10000) / 3975 + 1 / 298,15) - 273,15) ; Convertir température via datasheet

séparer plus facilement les entière et décimale pour affichage fins

temp_celcius_int = temp_celcius ;

temp_celcius_decimal_1 = temp_celcius * 10 - temp_celcius_int * 10 ;

Time(¤t_time) ;

time_info = localtime(¤t_time) ;

strftime (timeString, sizeof(timeString), « % H: % m: %S », time_info) ;

heures = time_info -> tm_hour ;

minutes = time_info -> tm_min ;

secondes = time_info -> tm_sec ;

/ * DISPOSITION affichage TEMP xxTT.txxx * /

uint16_t TEMPdata [] = {}

/ * chiffre 8 * / digit_position [0] + digit_value [10],

/ * chiffre 7 * / digit_position + 78 [1], / / 78 = valeur du caractère C (Clecius)

/ * 6 chiffres * / digit_position [2] + digit_value [10],

/ * 5 ème * / digit_position [3] + digit_value [temp_celcius_decimal_1],

/ * 4 chiffres * / digit_position [4] + digit_value [temp_celcius_int % 10] +128,

/ * 3ème chiffre * / digit_position [5] + digit_value [(temp_celcius_int-temp_celcius_int%10)/10],

/ * 2ème chiffre * / digit_position [6] + digit_value [10],

/ * 1er chiffre * / digit_position [7] + digit_value [10]} ;

/ * XxHH.MMxx DECOATIVE mise en page 1 heure * /

uint16_t TIMEdata [] = {}

/ * chiffre 8 * / digit_position [0] + digit_value [10],

/ * chiffre 7 * / digit_position [1] + digit_value [10],

/ * 6 chiffres * / digit_position [2] + digit_value [minutes % 10] + (2 % de secondes) * 128,

/ * 5 ème * / digit_position [3] + digit_value [(minutes - minutes%10)/10],

/ * à 4 chiffres * / digit_position [4] + digit_value [h % 10] +128,

/ * 3ème chiffre * / digit_position [5] + digit_value [(hours-hours%10)/10],

/ * 2ème chiffre * / digit_position [6] + digit_value [10],

/ * 1er chiffre * / digit_position [7] + digit_value [10]} ;

/ * TEMPS DECOATIVE DISPOSITION 2 HH. MM. SS *

/ uint16_t TIMEdata [] = {}

/ * chiffre 8 * / digit_position [0] + digit_value [10],

/ * chiffre 7 * / digit_position [1] + digit_value [% 10 secondes]

/ * 6 chiffres * / digit_position [2] + digit_value [(secondes - seconds%10)/10],

/ * 5 ème * / digit_position [3] + digit_value [minutes % 10] +128,

/ * 4 chiffres * / digit_position [4] + digit_value [(minutes - minutes%10)/10],

/ * 3ème chiffre * / digit_position [5] + digit_value [h % 10] +128,

/ * 2ème chiffre * / digit_position [6] + digit_value [(hours-hours%10)/10],

/ * 1er chiffre * / digit_position [7] + digit_value [10]} ;

/ * TEMPS DECOATIVE DISPOSITION 3 HH MM SS *

/ uint16_t TIMEdata [] = {}

/ * chiffre 8 * / digit_position [0] + digit_value [% 10 secondes]

/ * chiffre 7 * / digit_position [1] + digit_value [(secondes - seconds%10)/10],

/ * 6 chiffres * / digit_position [2] + digit_value [10],

/ * 5 ème * / digit_position [3] + digit_value [minutes % 10],

/ * 4 chiffres * / digit_position [4] + digit_value [(minutes - minutes%10)/10],

/ * 3ème chiffre * / digit_position [5] + digit_value [10],

/ * 2ème chiffre * / digit_position [6] + digit_value [h % 10],

/ * 1er chiffre * / digit_position [7] + digit_value [(hours-hours%10)/10]} ;

luminosité = 2560 + (light_value/max_light_value) * 15 ; commande de 0 à 15, niveau de luminosité 0x0a00--> 0x0a0f / / 2560--> 2575

mraa_spi_write_word (spi, luminosité) ; Luminosité des LED

Si (compteur == number_of_sec_to_display_time + 1)

{

mraa_spi_write_buf_word (spi, TEMPdata, 2) ;

mraa_spi_write_buf_word (spi, TEMPdata, 4) ;

mraa_spi_write_buf_word (spi, TEMPdata, 6) ;

mraa_spi_write_buf_word (spi, TEMPdata, 8) ;

mraa_spi_write_buf_word (spi, TEMPdata, 10) ;

mraa_spi_write_buf_word (spi, TEMPdata, 12) ;

mraa_spi_write_buf_word (spi, TEMPdata, 14) ;

mraa_spi_write_buf_word (spi, TEMPdata, 16) ;

usleep(number_of_sec_to_display_temp*1000000) ; / * affichage temp pour number_of_sec_to_display_temp secondes * /

compteur = 1 ;

display_on = 0 ;

mraa_spi_write_word (spi, 0x0c00) ; Afficher hors

}

d’autre

{

mraa_spi_write_buf_word (spi, TIMEdata, 2) ;

mraa_spi_write_buf_word (spi, TIMEdata, 4) ;

mraa_spi_write_buf_word (spi, TIMEdata, 6) ;

mraa_spi_write_buf_word (spi, TIMEdata, 8) ;

mraa_spi_write_buf_word (spi, TIMEdata, 10) ;

mraa_spi_write_buf_word (spi, TIMEdata, 12) ;

mraa_spi_write_buf_word (spi, TIMEdata, 14) ;

mraa_spi_write_buf_word (spi, TIMEdata, 16) ;

usleep(1000000) ;

compteur ++ ;

}

}

}

}

Articles Liés

Intel Edison, proximité activé, en parlant de calendrier

Intel Edison, proximité activé, en parlant de calendrier

(Ci-dessus est une vidéo - mais ne peut pas montrer sur un téléphone mobile. Cliquez ici pour visionner sur youtube. )Ce projet a été préparé comme un Dispositif de technologie d'assistance pour les aidants des personnes atteintes de troubles de la m
Rappel du calendrier de Google Intel IoT Edison

Rappel du calendrier de Google Intel IoT Edison

Vous n'a jamais manqué de remarquer cet événement tout à fait important de Google Agenda ? Pas plus avec le rappel de Intel IoT Edison Google Agenda !Dans ce instructable nous allons configurer étape par étape une carte Arduino Intel® Edison, afin qu
Clap activé bande LED

Clap activé bande LED

Ce Instructable vous montre comment construire une bande de LED clap activé. L'ensemble du projet s'inspire Secret Knock activé serrure pour tiroir, où l'utilisateur peut enregistrer un motif secret knock qui ouvrira la serrure à l'intérieur du tiroi
Intel IoT Edison Sonar Theremin

Intel IoT Edison Sonar Theremin

Intel® Edison est nouvelle merveille minuscule d'Intel, avec notamment un processeur d'Intel® Atom™ dual-core système sur une puce, 1Go de RAM, WiFi, LE Bluetooth qui vous permet d'exécuter un véritable système d'exploitation (linux!) sur elle et fai
Compteur de distance télémètre pour le sonar Intel IoT Edison

Compteur de distance télémètre pour le sonar Intel IoT Edison

J'ai été sur le chat dernièrement avec un ami ingénieur civil des mines, et je lui parlais de mon nouveau télémètre laser, quand il a laissé entendre qu'un télémètre avec fonctionnalités de journalisation serait beaucoup plus intéressant pour lui. Ét
Web Intel IoT Edison contrôlé LED

Web Intel IoT Edison contrôlé LED

Cette instructable montre comment combiner l'IDE Arduino avec node.js, disponible par défaut sous linux de Yocto Edison, afin de contrôler les éléments de l'Arduino à distance, via une interface web. Pour faire simple, vous pouvez appuyer sur un bout
Intel 3RM Edison/Seeed/Nexus OmniRover

Intel 3RM Edison/Seeed/Nexus OmniRover

Dernièrement, j'ai travaillé sur un kit simple, facile à hackathon pour la robotique mobile basé sur le module Intel Edison. Mes objectifs sont un robot capable de navigation autonome et mouvements omnidirectionnel pour moins de 250 $, tout inclus (l
YOCTO LINUX sur INTEL GALILEO / EDISON

YOCTO LINUX sur INTEL GALILEO / EDISON

Yocto est système d'exploitation que vous pourrez utiliser ini galileon d'intel ou intel edison. dans linux yocto, vous pouvez écrire votre code par utilisation nœud js, python, etc. il y a une raison pour utiliser linux yocto sur votre galileo intel
Comment faire votre propre planche de Clap

Comment faire votre propre planche de Clap

vous aurez besoin :Un petit tableau blanc - j'ai la mienne depuis DollaramaUn Conseil de styromousse - également de DollaramaUn crayon et une gomme à effacer - juste encasun marqueur noir & marqueur tableau blancUne règle ou un ruban mesureurUn ezapt
Intel® Edison Conseil : Surveillance de la température IoT

Intel® Edison Conseil : Surveillance de la température IoT

ITO n'est plus limité à juste le fabricant amateurs et les passionnés. Il a attiré l'attention des entreprises qui veulent démarrer une nouvelle révolution industrielle, à l'aide de l'ITO. De milieux de travail intelligente pour augmenter la producti
Automated étude environnement avec Intel Edison

Automated étude environnement avec Intel Edison

Dans ce projet, je vais vous montrer comment faire un environnement d'étude automatisée avec l'Edison Intel !L'Edison Intel utilise plusieurs capteur de surveillance de l'environnement dans votre salle d'étude. L'Edison permettra d'optimiser l'enviro
Automatique d’arrosage des plantes en pot avec Intel Edison

Automatique d’arrosage des plantes en pot avec Intel Edison

Automatique d'arrosage des plantes en pot avec Intel Edison... Une sonde d'humidité détecte la faible teneur en humidité du sol et active la pompe à eau ou l'électrovanne qui contrôle le débit d'eau. Lorsque l'eau nécessaire est pompée vers les plant
Programmer l’Edison d’Intel à l’aide de Wyliodrin (Intel IoT)

Programmer l’Edison d’Intel à l’aide de Wyliodrin (Intel IoT)

Il s'agit d'une Instructable qui programmera la Edison Intel utilisant le système de Wyliodrin. Le système Wyliodrin permet aux débutants d'entrer dans le monde de l'ITO avec peu ou aucune connaissance de codage ou technique.Étape 1: matériaux Ce que
Garderie, contrôle et suivi de système à l’aide du Kit de développement Intel Edison

Garderie, contrôle et suivi de système à l’aide du Kit de développement Intel Edison

Nous avons construit une garderie, contrôle et suivi de système avec Intel Edison board ainsi que les périphériques Bluetooth Low Energy (BLE) et une caméra USB. C'est une démonstration de combien il est facile le DevKit de Edison Intel peut être uti