ANOLOUGE DIGITALE-B-I-N-A-R-Y-KLOK ALL IN ONE!?!? (4 / 6 stap)

Stap 4: programmeren


Als gevolg van de beperking van de tijd kon ik niet naar mijn Binary Clock toegevoegd aan de andere klokken te voltooien. Ik wil het project en de post de binaire klok op hier later eindigen.

Hier is het programma

#platform "uLCD-32PT_GFX2"
#inherit "4DGL_16bitColours.fnc"
#inherit "FONT4.fnt"

#constant FALSE, TRUE / / FALSE = 0, TRUE = 1

#STACK 100

Afbeelding labels voor wat we in GFX2DEMO gebruiken. GCI (image control indexen)
#constant SEG7 0
#constant toetsen 1
#constant EXITBTN 4
#constant ADDBTN 8
#constant CHECKBTN 15
#constant CLOCKBTN 27

klok registers
#constant seconden 0
#constant minuten 1
#constant uur 2
#constant DS1307 0xD0
#constant WR 1
var seconden, minuten, uren;
#constant SEG7_BG_COLOUR 0x0841 / / 7 seg display achtergrondkleur

var iHndl; afbeelding van besturingsgreep
var mx, mijn; muis/touch positie
var edstate; klok bewerken staat, 1 = HH, 2 MM, 3 = = SS

var hFile;
#constant FACECOLOUR rood
#constant SECONDSCOLOUR wit
#constant MINUTESCOLOUR geel
#constant HOURSCOLOUR blauw

globale variabelen
var seconds2, minutes2, hours2;
var targetX, targetY;
var screenwidth, screenheight;
var xc, yc, r;
var n, x, y, k, colr, t, kj: = 1;
var kkl: = 1;
var exit2: = 0;
var firstx, firsty, x 2, y2, state2;
var set_timeButtonX, set_timeButtonY;

kaart van sleutelwaarden voor toetsenbord
#DATA
byte-toetsen 7,8,9,4,5,6,1,2,3,0,0,0
#END

Max tijd register waarde voor bewerken check
#DATA
byte maxval 0x59, 0x59, 0x23
#END

Translate bewerken pos vereiste register
#DATA
Word xlat HOURS, MINUTES, SECONDS

#END

func DrawHand (lengte van de var, var hoek, kleur van de var)

gfx_MoveTo (xc, yc); RE_ESTABLISH HET MIDDELPUNT MOET!!!

gfx_Set (OBJECT_COLOUR, kleur);
gfx_Orbit (hoek-90, lengte);
gfx_LineRel (targetX, targetY); VERKEERD! Picaso erfenis had een gebroken gfx_LineRel die ok hier werkte,
gfx_LineTo (targetX, targetY); maar het moet gfx_LineTo, dat is nu juist
endfunc

func toetsenblok (var staat)
var privé charpos;
var temp, r, n, x, y, k, x 1, y1, xoffs, yoffs, oldshadow;
var privé keyval;
if (!. Clock.Edit)
if(!edstate)
charpos: = 2;
oldshadow: = gfx_Set(BEVEL_SHADOW,1);
img_Darken (iHndl, toetsenbord);
img_SetAttributes (iHndl, toetsenbord, I_TOUCH_DISABLE); toetsenbord touch uitschakelen
img_SetWord (iHndl, toetsenbord, IMAGE_INDEX, 10); 10e frame instellen, knop (niet ingedrukt) toestand (omhoog)
gfx_Set(BEVEL_SHADOW,oldshadow);
anders
img_ClearAttributes (iHndl, toetsenbord, I_TOUCH_DISABLE); inschakelen van de toetsenbord touch
keyval: = 10; Aanvankelijk, nemen geen ingedrukt, selecteert u laatste keyframe
if(State == TOUCH_PRESSED)
calc welke knop is ingedrukt
x1: = 4 + img_GetWord (iHndl, toetsenbord, IMAGE_XPOS);
Y1: = 4 + img_GetWord (iHndl, toetsenbord, IMAGE_YPOS);
xoffs: = (img_GetWord(iHndl, KEYPAD, IMAGE_WIDTH)-8) / 3;
yoffs: = (img_GetWord(iHndl, KEYPAD, IMAGE_HEIGHT)-8) / 4;
x1: = 44;
Y1: = 89;
xoffs: = 16; We weten waar het toetsenbord is, gewoon gebruik maken van vaste waarden op te slaan codespace
yoffs: = 16;
voor (y: = y1; y < y1 + yoffs * 4; y += yoffs) / / nu zoeken touch co-ord
voor (x: = x1; x < x1 + xoffs * 3; x += xoffs)
n ++;
Als (mx > x & & mx < x + xoffs & & mijn > y & & mijn < y + yoffs) k: = n;
volgende
if(k) onderbreking;
volgende
if(k) / / als we te vigerend toonsoort got
keyval: = keys [k - 1]; de sleutel krijgen val
r: = xlat [edstate] - 1; Wijs juiste register
Temp: = Clock.time[r]; verplaatsen en toevoegen van nieuwe cijfers
Temp: = ((temp << 4) & 0xF0) + keyval;
Clock.time[r]: = temp;
Clock.Edit & = ~ (charpos << ((edstate-1) << 1)); de underscore wijzigen
charpos: = 1;
Clock(); 7seg weergave bijwerken
endif

endif
img_SetWord (iHndl, toetsenbord, IMAGE_INDEX, keyval); set vereiste frame, als 10e frame, de knop omhoog is (niet ingedrukt) staat
endif
img_Show (iHndl, toetsenbord);

endfunc

tijd weergeven als normaal bewerken == 0, anders Toon vereiste onderstrepingsteken.
elk stukje in var bewerken coresponds aan een onderstreping weergegeven, bit5 is
cijfer 1 downto bit 0 = cijfer 6
func Clock()
pause(1000);
privé var bewerken; bewerkingsmodus, selecteert stukjes 5:0 uderscores voor cijfers 6:1
var privé tijd [3]; tijd in de BCD-indeling, coresponds klok registreert seconden, minuten, uren
var k, n, xpos, regptr;

#constant X 22 / / x-positie voor tijd
#constant Y 32 / / y positie voor tijd
#constant W 22 / / cijfer breedte

img_Enable (iHndl, SEG7); inschakelen van het display van de 7seg, terwijl we weer te geven
xpos: = X; instellen vanaf x
regptr: = uur; Start in de spits
terwijl (n < 6)
img_SetPosition (iHndl, SEG7, xpos, Y); positie instellen voor cijfer
Als ((bewerken >> n) & 1) / / als het bewerken van cijfers,
k: = 11; Selecteer onderstrepingsteken
anders
k: = tijd [regptr]; anders krijg vereiste tijd registreren
Als (! () n & 1)) k: k = >> 4; HI knabbelen krijgen als HI cijfer
endif
img_SetWord (iHndl, SEG7, IMAGE_INDEX, k & 15); Selecteer de vereiste cijfers

img_Show (iHndl, SEG7); de afbeelding weergeven
xpos += W;
n ++;
Als (n == 2 || n == 4) / / wanneer vereist,
regptr--; decrement registreren aanwijzer
xpos += 4;
gfx_RectangleFilled (xpos, Y + 10, xpos + 4, Y + 14, oranje); plaats van de dikke darm
gfx_RectangleFilled (xpos, Y + 20, xpos + 4, Y + 24, oranje);
xpos += 10;
endif
wend
img_Disable (iHndl, SEG7); We zijn klaar weer te geven, de 7seg-beeldscherm uitschakelen
endfunc

Controleer of de calue die gewoon was bewerkt ok is
vragen met een korte foutbericht als buiten bereik
het instellen van het bewerkingsveld terug op dezelfde pos voor ander proberen.
retourneert nul als mislukt
func-checkRegisters()
var reg, retval: = TRUE;
if(edstate)
reg: = xlat [edstate-1];
Als (Clock.time [reg] > maxval[reg]) / / check voor verstandige waarde
gfx_MoveTo(90,3);
txt_FGcolour(Red); Als dit niet het geval is, gooien het bericht
putstr("ERROR\r");
pause(500);
putstr("");
edstate--; en back-up zodat we in huidige bewerkingsveld blijven
RetVal: = FALSE;
endif
endif
Return retval;
endfunc

func main()
var n, c, colr: = grijs;
var staat;
var afslag;

var opnieuw proberen: = 10;
terwijl (opnieuw--& &! file_Mount()); rijpaard naar de toer
Als (! opnieuw)
putstr ("Mount mislukt!");
pause(2000);
terugkeer; worden afgesloten als niet koppelen
endif

iHndl: = file_LoadImageControl ("GFX2DEMO. DAT","GFX2DEMO. GCI", 1); bouwen van het besturingselement van de afbeelding met behulp van de gewenste modus, een pointer terug te keren naar de toewijzing van de structuur
Als (! iHndl)
pause(2000);
terugkeer; afsluiten als afbeeldingsbesturingselement niet laden
endif

I2C_Open(I2C_SLOW); 100khz
I2C_Open(I2C_MED); 400khz
I2C_Open(I2C_FAST); 1mhz NB DS1307 kan niet worden uitgevoerd op 1mhz!!!

pause(10);

n:=readbyte(SECONDS) & 0x7F; zorgen CH bits is duidelijk anders klok niet uitgevoerd
writeByte(SECONDS, n);

pause(1000);
gfx_Cls();

img_Disable(iHndl, all); eerst omhoog, uitschakelen alle beelden

nu stellen wat we nodig hebben
img_Enable (iHndl, toetsenbord); Wij willen het toetsenblok
img_Enable (iHndl, ADDBTN);
img_Enable (iHndl, EXITBTN); Wij willen de knop Afsluiten
img_Enable (iHndl, CLOCKBTN); We willen de tijd-knop

gfx_Origin(30,15);

gfx_Panel (PANEL_RAISED, 0, 0, 200, 17, DONKERBLAUWE); titelbalk
gfx_Panel (PANEL_RAISED, 0, 18, 150, 200 GRAY); hoofdvenster van deelvenster
img_SetPosition (iHndl, EXITBTN, 184, 2); plaats van de knop Afsluiten
gfx_MoveTo(8,3);
txt_Opacity(opaque);
txt_BGcolour(DARKBLUE);
txt_FGcolour(CYAN);
putstr ("Set Time"); de titel

7 seg vertoningspaneel
gfx_Panel (PANEL_SUNKEN, 15, 24, 170, 50, GRAY);
gfx_Panel (PANEL_RAISED, 19, 28, 162, 42, SEG7_BG_COLOUR);

img_SetPosition (iHndl, toetsenbord, 40, 85); plaats het toetsenbord
img_SetPosition (iHndl, CLOCKBTN, 140, 90); plaats de tijd-knop
img_SetPosition (iHndl, CHECKBTN, 138, 130); plaats de knoop van de uitgang (verborgen tot bewerken)
img_SetPosition (iHndl, ADDBTN, 3, 100);
gfx_Button (BUTTON_UP, 3, 100, zilver, rood, FONT1, 1, 1, 'Set');

img_Show(iHndl, all); afbeeldingen bijwerken
gfx_Rectangle (140 90, 163, 111, RED); RODE rechthoek rond de klok knop (vergrendelde stand) plaats

Keypad(0);

touch_Set(TOUCH_ENABLE); inschakelen van het aanraakscherm
Clock();

while(!Exit) / / verblijf in lus til afsluiten knop hit

Als (Clock.edit == 0 & & edstate == 0) / / als we niet editie
c: = seconden; als seconden heeft rolde
if(c!=Clock.time[SECONDS])

Clock.time[SECONDS]: = seconden; Lees de klok chip
Clock.time[minutes]: = minuten;
Clock.time[hours]: = uur;
Clock();

endif
endif

staat: = touch_Get(TOUCH_STATUS); We zullen kijken voor elke activiteit van de aanraking
MX: = touch_Get(TOUCH_GETX); We zullen ook grijpen de x
mijn: = touch_Get(TOUCH_GETY); en de y-coördinaten van de aanraking

if(State == TOUCH_PRESSED) / / als er een pers
n: = img_Touched(iHndl, ALL); zien als alle beelden werden aangeraakt
Als (n! = -1)
if(n == KEYPAD) / / als toetsenbord was aangeraakt,
Keypad(State); bijwerken toetsenbord
anders
img_Lighten (iHndl, n); anders gewoon verlichten wanneer we raken
img_Show (iHndl, n);
endif
endif
gfx_Rectangle (140 90, 163, 111, colr); plaats rechthoek ronde klok btn
endif

if(State == TOUCH_MOVING) / / als er beweging
endif

if(State == TOUCH_RELEASED) / / als er een release;
Als (n! = -1)

if(n==EXITBTN) afslag: = 1; afsluiten als exit knop hit

if(n==CHECKBTN) / / als controleren knop hit
if(checkRegisters()) / / als laatste bewerking ok was
seconden: Clock.time[SECONDS =]; schrijven seconden + houden
minuten: Clock.time[MINUTES =]; schrijven minuten
uur: Clock.time[HOURS =]; uren schrijven
seconds2: = Clock.time[SECONDS]; schrijven seconden + houden
minutes2: = Clock.time[MINUTES]; schrijven minuten
hours2: = Clock.time[HOURS]; uren schrijven
n:=readbyte(SECONDS) & 0x7F; wachtruimte
writeByte(SECONDS, n);
pause(100);
Clock.Edit: = 0; nu niet bewerken, uitvoermodus
edstate: = 0;
Colr: = rood;
img_Disable (iHndl, CHECKBTN); Sortie knop uitschakelen
gfx_RectangleFilled (138, 130, 138 + 28, 130 + 28, GRAY); de sortie knop wissen
Clock();
Keypad(0);
anders
n: = CLOCKBTN; anders fout, opnieuw huidige bewerken fase
endif
endif

if(n==ADDBTN)
Als (kkl == 0)
Main();
KKL: = 1;
endif
Als (kkl == 1)
KKL: = 2;
endif
Als (kkl == 2)
gfx_Cls();
iHndl: = file_LoadImageControl ("GFX2DEMO. DAT","GFX2DEMO. GCI", 1);
Als (! iHndl)
pause(2000);
terugkeer;
endif
img_Disable(iHndl, all);
pause(10);

img_Enable (iHndl, ADDBTN);
img_SetPosition (iHndl, ADDBTN, 30, 10);
img_Show (iHndl, ADDBTN);
exit2: = 1;
seconds2: = Clock.time[SECONDS]; schrijven seconden + houden
minutes2: = Clock.time[MINUTES]; schrijven minuten
hours2: = Clock.time[HOURS]; uren schrijven
kJ: = 1;
endif
endif

if(n == CLOCKBTN)
img_Darken (iHndl, CLOCKBTN);
img_Show (iHndl, CLOCKBTN);
checkRegisters(); selectievakje voor geldige waarden
Als (++ edstate == 4) edstate: = 1; doorlopen van de velden bewerken
Clock.Edit: = 3 << ((edstate-1) << 1); instellen van vereist bits hoog in bewerken register
Keypad.charpos: = 2; Start bewerken op zijn minst significante cijfer
Clock.time[xlat [edstate-1]]: = 0; nul van het bedrijfsregister klaar
img_Enable (iHndl, CHECKBTN); Sortie knop inschakelen
img_Show (iHndl, CHECKBTN); weer te geven
gfx_Rectangle (138 130, 138 + 27, 130 + 27, GRAY); rechthoek om zich te ontdoen van die vervelende uitlijning stippen
Colr: = kalk;
Clock();
Keypad(State);
endif

if(n == KEYPAD) / / als toetsenbord loslaat
Keypad(State); status bijwerken
endif

endif
gfx_Rectangle (140 90, 163, 111, colr); plaats rechthoek ronde klok btn
n: = -1;
endif
Setup;
wend
setupclock();
endfunc

func Setup
Als (exit2 == 1 & & kj == 1)
kJ: = 0;
txt_Set (TEXT_OPACITY, ONDOORZICHTIG);
ScreenWidth: = gfx_Get (X_MAX);
screenheight: = gfx_Get (Y_MAX);
XC: screenwidth = >> 1;
yc: screenheight = >> 1;
r: = MIN (screenwidth, screenheight) >> 1;
gfx_Set (PEN_SIZE, solide);
gfx_Circle (xc, yc, r-16, FACECOLOUR);
gfx_Set (PEN_SIZE, OUTLINE);
n: = -8;
terwijl (n ++ < 8)
Colr: = groen;
gfx_Circle (xc, yc, r + n-8, colr);
wend

instellen van het middelpunt
gfx_MoveTo (xc, yc);

een variabele van de doelgroep voor de opdracht van de baan
gfx_OrbitInit (& targetX, & targetY);

Mark van de uren rond de wijzerplaat
gfx_Set (PEN_SIZE, solide);
gfx_MoveTo (xc, yc);
n: =-90; 12 uur positie
terwijl (n < 270)
gfx_Orbit (n, r-6);
k: = 3;
Als (! () n % 90)) k: = 5;
gfx_Circle (targetX, targetY, k, blauw);
n: = n + 30; elke 30 degreees
wend
KKL: = 0;

setupclock();
Touch();
anders
setupclock();
endif
endfunc

func-setupclock()
seconden: = 80;
minuten: = 89;
uur: = 18;
Herhaal
Als (Clock.edit == 0 & & edstate == 0)
pause(1000);
Als (kkl == 1)
afdrukken ("The Time is", uur [DEC1Z], ":", [DEC2Z] minuten, ":", [DEC2Z] seconden);
seconden
Als (seconden == 9)
seconden: = seconden + 6;
endif / / 25, 40, 55
Als (seconden == 25)
seconden: = seconden + 6;
endif
Als (seconden == 41)
seconden: = seconden + 6;
endif
Als (seconden == 57)
seconden: = seconden + 6;
endif
Als (seconden == 73)
seconden: = seconden + 6;
endif
minuten
Als (minuten == 9)
minuten: = minuten + 7;
endif / / 25, 40, 55
Als (minuten == 25)
minuten: = minuten + 7;
endif
Als (minuten == 41)
minuten: = minuten + 7;
endif
Als (minuten == 57)
minuten: = minuten + 7;
endif
Als (minuten == 73)
minuten: = minuten + 7;
endif
uur
Als (uren == 9)
uur: = uur + 7;
endif
Als (! () seconden: = (++ seconds % 90)))
Als (! () minuten: = (++ minuten % 90)))

Als (uren == 18)
uur: = 0;
endif
uur: = (++ uur % 19);
endif
endif
endif
Clock.time[SECONDS]: = seconden; Lees de klok chip
Clock.time[minutes]: = minuten;
Clock.time[hours]: = uur;
Clock(); / / update van de tijd
terugkeer;
endif

Als (kkl == 2 & & exit2 == 1)

DrawHand (r-20, seconds2 * 6, FACECOLOUR); undraw van de tweede hand

DrawHand (r-35, minutes2 * 6 + seconds2/10, FACECOLOUR); undraw de minutenwijzer

DrawHand (r-50, hours2 * 30 + minutes2 >> 1, FACECOLOUR); undraw van de kleine wijzer

gfx_Circle (xc, yc, 5, FACECOLOUR);

berekenen van de nieuwe tijd
Merk op dat dit buggy was,
Als (! () seconds2: = (++ seconds2% 60)))
Als (! () minutes2: = (++ minutes2% 60)))
hours2: = (++ hours2% 12);
endif
endif

display_Vsync();
DrawHand (r-20, seconds2 * 6, SECONDSCOLOUR); vernieuwen van de tweede hand
DrawHand (r-35, minutes2 * 6 + seconds2/10, MINUTESCOLOUR); Ververs de minutenwijzer
DrawHand (r-50, hours2 * 30 + minutes2 >> 1, HOURSCOLOUR); de uurwijzer vernieuwen
gfx_Circle (xc, yc, 5, oranje);
terugkeer;
Touch();
terugkeer;
endif
anders
terugkeer;
terwijl (!. Clock.Edit == 0 & &! edstate == 0)
pause(100);

wend

endif
Forever
endfunc

func-touch()
touch_Set(TOUCH_ENABLE); inschakelen van het aanraakscherm
Clock();

Herhaal
var n, colr: = rood;
var staat;
staat: = touch_Get(TOUCH_STATUS); We zullen kijken voor elke activiteit van de aanraking
MX: = touch_Get(TOUCH_GETX); We zullen ook grijpen de x
mijn: = touch_Get(TOUCH_GETY); en de y-coördinaten van de aanraking

if(State == TOUCH_PRESSED) / / als er een pers
n: = img_Touched(iHndl, ALL); zien als alle beelden werden aangeraakt
if(State == TOUCH_RELEASED) / / als er een release;
Als (n! = -1)

if(n==ADDBTN)

Main();
KKL: = 0;
exit2: = 0;
endif
endif
endif
endif
terugkeer;
Forever
endfunc

Gerelateerde Artikelen

Hoe te breken in digitale kluizen

Hoe te breken in digitale kluizen

Hoe te breken in digitale kluizenDeze tutorial toont je hoe te breken in een digitale kluis. De techniek maakt gebruik van een ontwerp-vloer in de kluizen vaak gevonden in hotels of huizen. Dit werkt op vele digitale kluizen maar het zal niet werken
Een digitale fotolijst hacken een klok $ 2

Een digitale fotolijst hacken een klok $ 2

ben je moe van die 2$ keuken klok?Is het ontwerp echt zo prettig als het zou kunnen zijn?Weet iemand nog hoe lees ik deze dingen meer?Ik weet dat ik niet. Ik weet ook dat ik iets daarboven gebruiken kon om mijn aandacht af van eigenlijk probeert de t
Project 1.1: Inleiding tot digitale Engineering en FPGA planken

Project 1.1: Inleiding tot digitale Engineering en FPGA planken

Dit is de eerste in een reeks van projecten met behulp van Digilent materialen die zijn gemaakt voor EE214 aan de Washington State University. Echter besloten hebben we dat we hen toegankelijker te maken het algemene publiek wilden, dus ik ben het cr
Het invoeren van de digitale dagen fotowedstrijd

Het invoeren van de digitale dagen fotowedstrijd

grote fotografie vereist alle vormen van creativiteit, en niet alleen in de samenstelling. Technieken, trucs en vindingrijk zelfgemaakte gadgets kunnen ook helpen u de perfecte foto. Bijna iedereen heeft een geheim van fotografie om te delen - dat is
DriveMyPhone - Smartphone gecontroleerd 3D gedrukte voertuig

DriveMyPhone - Smartphone gecontroleerd 3D gedrukte voertuig

DriveMyPhone is een project dat ik heb aanbrengen op mijn computer in digitaal formaat voor de afgelopen 6 jaar nu. Het concept kwam rond toen ik bezig was met mijn andere robotica projecten genoemd MobileEarthRover One am MobileEarthRover twee.Ik he
Touchscreen vertoning en oplaadbare batterij Pack voor de PiKon telescoop / Raspberry Pi

Touchscreen vertoning en oplaadbare batterij Pack voor de PiKon telescoop / Raspberry Pi

In 2014, Mark Wrigley van Alternatief fotonica samen met Andy King, een natuur- en Sterrenkunde onderzoek koppelen aan de Universiteit van Sheffield, gemaakt van de PiKon 3d gedrukte telescoop. Gebaseerd op Newtons spiegeltelescoop ontwerp dat het ma
Mijn Garage van de Eco-vriendelijke kachel: Een pneumatische thermische zonnecollector

Mijn Garage van de Eco-vriendelijke kachel: Een pneumatische thermische zonnecollector

Dit instructable zal betrekking hebben op het bouwen van mijn 72 vierkante voet thermische zonnecollector dat maakt gebruik van de energie van de zon om winter tijd ruimteverwarming voor mijn workshop vrijstaande garage. Het functionele deel van de c
Een Lapful van schroot-een Lap steelgitaar van gemaakt gerecycleerde materialen

Een Lapful van schroot-een Lap steelgitaar van gemaakt gerecycleerde materialen

De lap steelgitaar heeft diepe wortels. Het fundamentele principe is eenvoudig-een string is strak gespannen en een zware, harde-object wordt gebruikt om glijden langs de tekenreeks terwijl de tekenreeks is geplukt om geluiden. Een vroege voorouder w
Nightsafe draai-signaal Running Vest

Nightsafe draai-signaal Running Vest

Dit vest is ontworpen met een ring van licht om in te schakelen wanneer het donker buiten, de andere helft van een ring te knipperen links wanneer u op de linker schakelaar, en de andere helft van die ring te knipperen rechts wanneer het recht schake
Eenvoudige lichtgewicht Hexacopter (A2212 motoren, 30AMP ESC, AIOP FC, 3000mAh 11.1v Lipo)

Eenvoudige lichtgewicht Hexacopter (A2212 motoren, 30AMP ESC, AIOP FC, 3000mAh 11.1v Lipo)

Hier hebben we instructie voor een zeer eenvoudige en relatief goedkope Hexacopter. Dit is een zeer eenvoudige methode van het gebruik van de bouw alleen elementaire hulpmiddelen voor markering een ijzerzaag en een boor.De onderdelen zijn als volgt:-
Bits bonzen stapsgewijze: controle van de Arduino voor WS2811, WS2812 en WS2812B RGB LED's

Bits bonzen stapsgewijze: controle van de Arduino voor WS2811, WS2812 en WS2812B RGB LED's

Disclaimer: in het afgelopen jaar, een paar verschillende bibliotheken zijn geschreven voor het beheersen van deze alomtegenwoordige RGB LEDs door collega makers van Adafruit, PJRC en het FastSPI-project.  De bibliotheken werken prima, en we moeten p
Hoe te maken Pasta

Hoe te maken Pasta

het is gemakkelijk te leren hoe te maken van verse pasta deeg thuis. U kunt de uitrol van een partij van verse pasta in minder dan een uur. Met slechts twee ingrediënten, wie kan weerstaan?Op het eerste, het maken van noedels vanaf nul kunnen lijken
PIR-bewegingsdetector met Arduino: Bediend, laagste Power verbruiksmodus

PIR-bewegingsdetector met Arduino: Bediend, laagste Power verbruiksmodus

Deze video toont snel en gemakkelijke benadering van het stroomverbruik van de ATMEGA 328P te verlagen op basis van Arduino boards Arduino boards met ongeveer 70-75% met behulp van PIR of PID sensoren voor bewegingsdetectie.Dit project introduceert d
Handschoen Controlled Robotic Hand - goedkope en eenvoudige versie

Handschoen Controlled Robotic Hand - goedkope en eenvoudige versie

Dit project is gebaseerd off van de DIY Robotic Hand instructable hier gevestigd. Als een arme student maar, ik kon niet veroorloven dishing ~ $500 voor een 3D afgedrukt hand en nog eens $50 voor de servo's. Ik heb uiteengezet te herzien van een goed