Intel® Edison Board: Clap geactiveerd klok (5 / 6 stap)

Stap 5: Code

Het volgende is C++-code voor de Eclipse IDE voor Intel® Edison, te installeren en hoe aan de slag: https://software.intel.com/en-us/installing-the-e...

/*

* Auteur: Dirk Roziers

* Copyright (c) 2015 Intel Corporation.

*

* Het is hierbij toegestaan, kosteloos aan eenieder verkrijgen

* een kopie van deze software en bijbehorende documentatie bestanden (de

* "Software"), om aan te pakken in de Software zonder beperking, met inbegrip van

* zonder beperking de rechten te gebruiken, kopiëren, aanpassen, samenvoegen, publiceren,

* distribueren, sublicentiëren en/of verkopen van kopieën van de Software, en om te

* het toestaan van personen aan wie de Software wordt geleverd om dit te doen, behoudens

* de volgende voorwaarden:

*

* De bovenstaande auteursrechtkennisgeving en deze machtigingsaanduiding bedraagt

* opgenomen in alle kopieën of aanzienlijke onderdelen van de Software.

*

* DE SOFTWARE WORDT GELEVERD "AS IS", ZONDER GARANTIE VAN WELKE AARD OOK,

* EXPLICIET OF IMPLICIET, INCLUSIEF MAAR NIET BEPERKT TOT DE GARANTIES VAN

* VERKOOPBAARHEID, GESCHIKTHEID VOOR EEN BEPAALD DOEL EN

* NIET-INBREUKMAKENDHEID. IN GEEN GEVAL DE AUTEURS OF COPYRIGHT HOUDERS WORDEN

* AANSPRAKELIJK VOOR ENIGE CLAIM, SCHADELOOSSTELLING OF ANDERE AANSPRAKELIJKHEID, OP BASIS VAN EEN HANDELING

* VAN CONTRACT, ONRECHTMATIGE DAAD OF ANDERSZINS, DIE VOORTVLOEIT UIT, HET GEVOLG IS VAN OF IN VERBAND

* MET DE SOFTWARE OF HET GEBRUIK OF ANDERE BEWERKING MET BETREKKING TOT DE SOFTWARE.

*/

#include "mraa.h"

#include

#include

#include

int main (int argc, char ** argv)

{

time_t current_time;

struct tm * time_info;

char timeString [9]; ruimte voor "HH:MM:SS\0"

int uren, minuten, seconden;

unsigned int temp_value, light_value, sound_value;

int counter = 1;

int display_on = 0;

unsigned int sound_threshold = 400;

zweven max_light_value = 800.0;

int number_of_sec_to_display_time = 10;

int number_of_sec_to_display_temp = 3;

float weerstand;

float temp_celcius;

int temp_celcius_int;

int temp_celcius_decimal_1;

int helderheid;

mraa_aio_context temp_pin;

mraa_aio_context light_pin;

mraa_aio_context sound_pin;

/ * waarde van elk segment volgens binaire vertegenwoordiging in de gegevensbladweergave

64

------

| |

2 | | 32

| 1 |

------

| |

4 | | 16

| |

------

8

index in matrix = waarde van cijfers,

IE digit_value [5] = laat 5 op LED,

digit_value [7] = laat 7 op LED,

digit_value [10] = leeg LED

*/

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

};

/*

* de binaire waarde worden verzonden over SPI aan vertoning te weergavewaarde vvvv vvvv op LED getal nnnn is: 0000 nnnn vvvv vvvv

* b.v. 5e LED van links (= 4e LED van rechts) het instellen op waarde 5 (= 91, zie hierboven = 10011011)--> pass 0000 0100 1001 1011

* decimaal = 1024 (0000 0100 0000 0000) + 91 (0000 0000 1001 1011) = 1115

*/

int digit_position [] {} =

256 / * digit_position [0] = 8e cijfer = meest rechtse cijfers, 256 = 0100 hex = 0000 0001 0000 0000 binaire * /

512, / * digit_position [1] = 7e cijfer = 2e van rechts, 512 = 0200 hex = 0000 0010 0000 0000 binaire * /

768, / * digit_position [2] = 6e cijfer * /

1024 / * digit_position [3] = 5e cijfer * /

1280 / * digit_position [4] = 4e cijfer * /

1536 / * digit_position [5] = 3e cijfer * /

1792 / * digit_position [6] = 2e cijfer * /

2048 / * digit_position [7] = 1e cijfer = meest linkse cijfer * /

/ * index in matrix = 8 - positie van cijfers op uit te stallen; de meeste cijfers links = positie 1 * /

};

Temp sensor op analoge Pin0 (Aio0), lichtsensor op analoge Pin1 (Aio1) en correcte sensor op analoge Pin2 (Aio2)

temp_pin = mraa_aio_init(0);

light_pin = mraa_aio_init(1);

sound_pin = mraa_aio_init(2);

mraa_spi_context de spi;

SPI = mraa_spi_init(1);

Als (spi == NULL)

{

printf ("initialisatie van spi mislukt, selectievakje syslog voor details, afrit... \n");

Exit(1);

}

Klik op frequentie ingesteld op 400 kHz)

mraa_spi_frequency (spi, 400000);

mraa_spi_lsbmode (spi, 0);

De MAX7219/21 Chip moet de gegevens in word formaat

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

{

printf kon ("niet SPI apparaat ingesteld op de 16-bits modus, afrit... \n");

Exit(1);

};

mraa_spi_write_word (spi, 0x0900); Niet decoderen bits

mraa_spi_write_word (spi, 0x0a0f); Helderheid van LEDs--0xa00 laagste, hoogste 0xa0f--ingesteld op hoogste om mee te beginnen

mraa_spi_write_word (spi, 0x0b07); Toon alle lijnen van het Scan

mraa_spi_write_word (spi, 0x0c00); Weergeven uit--beginnen met display.

mraa_spi_write_word (spi, 0x0f00); Testâ af

while (true) {}

terwijl (display_on == 0) {}

detecteren van geluid als u wilt overschakelen van weergave op

sound_value = mraa_aio_read(sound_pin);

Als (sound_value > sound_threshold) {}

display_on = 1;

mraa_spi_write_word (spi, 0x0c01); Weergeven op

}

usleep(1000);

}

terwijl (display_on == 1)

{

temp_value = mraa_aio_read(temp_pin);

light_value = mraa_aio_read(light_pin);

Converteren van temp_value lezen in Celsius met behulp van datashaeet - Bvalue van sensor = 3975

weerstand = (1023 - temp_value) * 10000 / temp_value; De weerstand van de sensor te krijgen

temp_celcius = (1 / (log(resistance / 10000) / 3975 + 1 / 298.15) - 273.15); Omzetten van de temperatuur via het gegevensblad

aparte integer en decimaal voor gemakkelijker weergeven doeleinden

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);

uren = time_info -> tm_hour;

minuten = time_info -> tm_min;

seconden = time_info -> tm_sec;

/ * TEMP weergave-indeling xxTT.txxx * /

uint16_t TEMPdata [] {} =

/ * 8e cijfer * / digit_position [0] + [10], digit_value

/ * 7e cijfer * / digit_position [1] + 78, / / 78 = waarde van teken C (Clecius)

/ * 6e cijfer * / digit_position [2] + [10], digit_value

/ * 5e cijfer * / digit_position [3] + [temp_celcius_decimal_1], digit_value

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

/ * 3de cijfer * / digit_position [5] + digit_value [(temp_celcius_int-temp_celcius_int%10)/10],

/ * 2e cijfer * / digit_position [6] + [10], digit_value

/ * 1e cijfer * / digit_position [7] + digit_value [10]};

/ * TIJD DISPKAY lay-out 1 xxHH.MMxx * /

uint16_t TIMEdata [] {} =

/ * 8e cijfer * / digit_position [0] + [10], digit_value

/ * 7e cijfer * / digit_position [1] + [10], digit_value

/ * 6e cijfer * / digit_position [2] + [10 minuten %] digit_value + (%2 seconden) * 128,

/ * 5e cijfer * / digit_position [3] + digit_value [(minuten - minutes%10)/10],

/ * 4 cijferige * / digit_position [4] + [uur 10%] digit_value +128,

/ * 3nd cijfer * / digit_position [5] + digit_value [(hours-hours%10)/10],

/ * 2e cijfer * / digit_position [6] + [10], digit_value

/ * 1e cijfer * / digit_position [7] + digit_value [10]};

/ * TIJD DISPKAY LAY-OUT 2 HH. JMI SS *

/ uint16_t TIMEdata [] {} =

/ * 8e cijfer * / digit_position [0] + [10], digit_value

/ * 7e cijfer * / digit_position [1] + [seconden 10%], digit_value

/ * 6e cijfer * / digit_position [2] + digit_value [(seconden - seconds%10)/10],

/ * 5e cijfer * / digit_position [3] + [10 minuten %] digit_value +128,

/ * 4e cijfer * / digit_position [4] + digit_value [(minuten - minutes%10)/10],

/ * 3de cijfer * / digit_position [5] + [uur 10%] digit_value +128,

/ * 2e cijfer * / digit_position [6] + digit_value [(hours-hours%10)/10],

/ * 1e cijfer * / digit_position [7] + digit_value [10]};

/ * TIJD DISPKAY LAY-OUT 3 HH MM SS *

/ uint16_t TIMEdata [] {} =

/ * 8e cijfer * / digit_position [0] + [seconden 10%], digit_value

/ * 7e cijfer * / digit_position [1] + digit_value [(seconden - seconds%10)/10],

/ * 6e cijfer * / digit_position [2] + [10], digit_value

/ * 5e cijfer * / digit_position [3] + [minuten 10%], digit_value

/ * 4e cijfer * / digit_position [4] + digit_value [(minuten - minutes%10)/10],

/ * 3de cijfer * / digit_position [5] + [10], digit_value

/ * 2e cijfer * / digit_position [6] + [uur 10%], digit_value

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

helderheid = 2560 + (light_value/max_light_value) * 15; helderheid niveau 0 tot en met 15, opdracht 0x0a00--> 0x0a0f / / 2560--> 2575

mraa_spi_write_word (spi, helderheid); Helderheid van de LED 's

Als (teller == 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); / * weergeven temp voor number_of_sec_to_display_temp seconden * /

Counter = 1;

display_on = 0;

mraa_spi_write_word (spi, 0x0c00); Weer af

}

anders

{

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);

teller ++;

}

}

}

}

Gerelateerde Artikelen

Intel® Edison Board: IoT temperatuurbewaking

Intel® Edison Board: IoT temperatuurbewaking

IoT is niet langer beperkt tot alleen de maker hobbyisten en enthousiastelingen. Het heeft de aandacht van bedrijven die willen starten van een nieuwe industriële revolutie met behulp van IoT gevangen. Van slimme werkplek tot een toename van de produ
Hoe verbind je Intel Edison board met WiFi

Hoe verbind je Intel Edison board met WiFi

deze - ible bevat stappen voor het instellen van WiFi netwerktoegang tot uw Intel Edison boord en een IP-adres verkrijgen.Stap 1: Monteer je board Installeren van de Mini Breakout Board op de Expansion Board, hechten van het been en sluit uw kabelsSt
Motion geactiveerd Security Camera met behulp van Intel Edison

Motion geactiveerd Security Camera met behulp van Intel Edison

Het doel van dit project is dat een veiligheidscamera die is ingeschakeld door een motion-sensor. Een passieve Infra-Red (PIR) bewegingsmelder bewaakt continu voor elke beweging in zijn gezichtsveld. Wanneer een beweging wordt gedetecteerd hierdoor e
MONTAGE van de EDISON van het bestuur van de INTEL® met de INTEL® EDISON MINI BREAKOUT BOARD

MONTAGE van de EDISON van het bestuur van de INTEL® met de INTEL® EDISON MINI BREAKOUT BOARD

In dit instructable, u zult verbinden met de Intel® Edison-module een Intel® Edison mini breakout board.Vereisten> Intel Edison module> Intel Edison mini breakout board> 2 micro B naar USB Type A-kabelsMerk op dat de breakout board twee micro USB
BeatBox: schok bijhouden voor pakketten met Intel Edison - Intel IOT

BeatBox: schok bijhouden voor pakketten met Intel Edison - Intel IOT

Hallo iedereenWe kwamen net terug thuis na deel te nemen aan Intel IoT Roadshow (en hackathon) in Londen.Het was geweldig en vol ideeën en creatieve trekt. Een zeer goede ervaring. Je moet uitproberen.We kwam als een reeds gevormde team en met een ze
Programable MIDI Synth met Intel Edison en Csound

Programable MIDI Synth met Intel Edison en Csound

Een MIDI-controller is zoals een computer toetsenbord, maar in plaats van tekens worden verzonden naar de computer, het stuur notities (en een heleboel meer informatie over hoe de notitie wordt gespeeld). U kunt meer informatie over MIDI-Controllers
Een Absolute beginnersgids voor de Intel Edison

Een Absolute beginnersgids voor de Intel Edison

Hey daar! Onlangs ontving ik een Intel Edison board van Instructables, als een aardige gift. Als je afvraagt wat dat is, is de Intel Edison een kleine computer de grootte van een SD-kaart (dat is serieus klein), voor elektronica en computer hobbyiste
Verticale tuin & weer aangedreven door Intel Edison

Verticale tuin & weer aangedreven door Intel Edison

BioEdison is een slimme verticale tuin op basis van de nieuwe Intel Edison waarmee een eenvoudige, geautomatiseerdebeheer van elk type van plantaardige of plant.Voordelen van het bedieningsorgaan BioEdison dan een traditionele moestuin zijn het effic
Intel Edison eenvoudige afstandssensor met Grove Ledbar Indicator en zoemer

Intel Edison eenvoudige afstandssensor met Grove Ledbar Indicator en zoemer

Dit is mijn eerste en "echt" eenvoudige project dat ik gemaakt met behulp van Intel Edison. De zoemer zal buzz, deze "eenvoudige" project zal het meten van afstand met behulp van ultrasone sensor en de Ledbar zal tonen hoe ver de afsta
T.E.E.T.H. - IOT toevoegen aan uw huis met Intel Edison

T.E.E.T.H. - IOT toevoegen aan uw huis met Intel Edison

TANDEN staat voor Timer moedigen iedereen aan gezondheid. De Intel Edison board min vormfactor wordt gebruikt om te upgraden van uw tandenborstel houder op een IOT Home toestel. Deze slimme upgrade is geweldig voor de gezondheid-bewuste mensen, die o
Lightsaber met behulp van Intel Edison

Lightsaber met behulp van Intel Edison

Op dit Instructable, zal ik delen hoe ik mijn eigen Lightsaber met een Intel Edison board, een goedkoop speelgoed van de Jedi Lightsaber en een aantal adresseerbare RGB LED's gebouwd.Dit was onderdeel van een uitdaging dat Pacman Pereira naar alle Br
Intel Edison Motion Sensor waterpomp

Intel Edison Motion Sensor waterpomp

Leer het bouwen van een geautomatiseerde water pompsysteem door het gebruik van een motiesensor en een waterpomp.Benodigde materialen:1 x 6v Mini waterpomp2 x Grove IR afstand Interruptor1 x Grove estafette (30a)1 x Grove Water Sensor1 x Intel edison
Telefoon gecontroleerd garagedeur, aangedreven door Intel Edison Blynk & Arduino

Telefoon gecontroleerd garagedeur, aangedreven door Intel Edison Blynk & Arduino

Geautomatiseerde producten heeft meer gemeengoed geworden en oplossingen die zijn goedkoop bestaat in sommige gebieden, een voorbeeld zou overdekt bliksem of Automatische timers. Maar als u wilt dat een garagedeur die kan worden geopend met een telef
Intel Edison Gas sensorsysteem te detecteren Biogas / LPG lekkage

Intel Edison Gas sensorsysteem te detecteren Biogas / LPG lekkage

Ik behoor tot die 300 + instructables leden van de Gemeenschap die de Intel Edison Board en de specialiteit Intel IoT development kit aangeboden door instructables onder het thema milieu & landbouw ontvangen. Een van de door mij ingediende voorstel w