Enkla POV w/Ardweeny - Persistence of Vision (6 / 6 steg)
Steg 6: Koden
Den ursprungliga koden är från en internet hitta som noteras i kommentarerna
Jag har ändrat det kraftigt
Några frågor:
utan en hall sensor måste man spela med tiden mellan ord för att få en någorlunda stabil bild
Arduino cykel POV
//
av Scott Mitchell
www.openobject.org
Öppen källkod Urbanism
//
Copyright (C) 2008 Scott Mitchell 12-10-2008
//
Detta program är fri programvara: du kan vidaredistribuera det och/eller ändra
det enligt villkoren i GNU General Public License som offentliggjorts av
Free Software Foundation, antingen version 3 av licensen, eller
(på ditt alternativ) någon senare version.
//
//============================================================
6/2011 kraftigt modifierad av c. Dubois till min POV
Hall sensorn är en switch så jag använde olika koden för det.
används även en font.h som jag hittade
// ------------------------------------------------------------
definiera alfabetet
#include "font.h"
definiera Arduino LED stiften i användning
CONST int LEDpins [] = {
1,2,3,4,5,6,7}.
antal lampor
CONST int charHeight = sizeof(LEDpins);
CONST int charWidth = 5;
int var = 0;
int worddelay = 50000;
sensor setup
CONST int sensorPIN = 0; definiera Arduino givarstaven
booleska sensorFlag = false; lagrar sensor staten
int sensVal; variabel för att lagra värdet kommer från sensorn
CONST char textString [] = "CLAIRE";
CONST char textString2 [] = "är en";
CONST char textString3 [] = "Honung".
CONST char textString4 [] = "BÄVERSKINNET";
void setup()
{
pinMode (13, OUTPUT);
pinMode (1, OUTPUT);
pinMode (2, utgång);
pinMode (3, OUTPUT);
pinMode (4, OUTPUT);
pinMode (5, OUTPUT);
pinMode (6, OUTPUT);
pinMode (7, OUTPUT);
Serial.BEGIN(9600);
}
void loop()
{
Aktivera Led för en cirkel i mitten och bevis den Arduinoen drivs
digitalWrite 13, hög. ställa in lysdioden på
sensVal = analogRead(sensorPIN); Läs Halleffekten sensorn
Serial.println(sensVal);
fördröjning (500).
om (sensVal! = 1023) {
Slå på lysdioderna att testa att de arbetar och skapa cirklar
digitalWrite (1, hög); ställa in lysdioden på
Delay(500);
digitalWrite (2, hög). ställa in lysdioden på
Delay(500);
digitalWrite (3, hög). ställa in lysdioden på
Delay(500);
digitalWrite (4, hög). ställa in lysdioden på
Delay(500);
digitalWrite 5, hög, ställa in lysdioden på
Delay(500);
digitalWrite (6, hög). ställa in lysdioden på
Delay(500);
digitalWrite (7, hög). ställa in lysdioden på
fördröjning för att låta fläkten få snabba
fördröjning (3000);
skriva ut varje bokstav i textString
sedan klar och skriva ut textstring2
var = 0;
medan (var < 200) {
göra något repetitiva 150 gånger
för (int k = 0; k < sizeof(textString); k ++) {
printLetter(textString[k]);
}
var ++;
mellanrum mellan ord
delayMicroseconds(worddelay);
}
klara lampor
digitalWrite (1, låg); iväg för LED
digitalWrite (2, låg). iväg för LED
digitalWrite (3, låg). iväg för LED
digitalWrite (4, låg). iväg för LED
digitalWrite (5, låg). iväg för LED
digitalWrite (6, låg). iväg för LED
digitalWrite (7, låg). iväg för LED
fördröjning mellan fraser
fördröjning (500).
// ------------------------------
--nu andra frasen---
var = 0;
medan (var < 100) {
göra något repetitiva 75 gånger
för (int k = 0; k < sizeof(textString2); k ++) {
printLetter(textString2[k]);
}
var ++;
mellanrum mellan ord
delayMicroseconds(worddelay);
}
klara lampor
digitalWrite (1, låg); iväg för LED
digitalWrite (2, låg). iväg för LED
digitalWrite (3, låg). iväg för LED
digitalWrite (4, låg). iväg för LED
digitalWrite (5, låg). iväg för LED
digitalWrite (6, låg). iväg för LED
digitalWrite (7, låg). iväg för LED
fördröjning mellan fraser
fördröjning (500).
--nu göra tredje fras---
var = 0;
medan (var < 100) {
göra något repetitiva 200 gånger
för (int k = 0; k < sizeof(textString3); k ++) {
printLetter(textString3[k]);
}
var ++;
mellanrum mellan ord
delayMicroseconds(worddelay);
}
klara lampor
digitalWrite (1, låg); iväg för LED
digitalWrite (2, låg). iväg för LED
digitalWrite (3, låg). iväg för LED
digitalWrite (4, låg). iväg för LED
digitalWrite (5, låg). iväg för LED
digitalWrite (6, låg). iväg för LED
digitalWrite (7, låg). iväg för LED
fördröjning mellan fraser
fördröjning (250);
--nu göra fjärde fras---
var = 0;
medan (var < 175) {
göra något repetitiva 200 gånger
för (int k = 0; k < sizeof(textString4); k ++) {
printLetter(textString4[k]);
}
var ++;
mellanrum mellan ord
delayMicroseconds(worddelay);
}
}
// }
// ------------------- Functions _________________
void printLetter(char ch)
{
se till att karaktären är innanför alfabetet (definierad av filen font.h)
om det inte är, gör det ett tomt tecken
om (ch < 32 || ch > 126) {
CH = 32.
}
subtrahera blanksteget (konverterar ASCII-numret till indexnumret teckensnitt)
CH-= 32.
Stega genom varje byte av arrayen karaktär
för (int jag = 0; jag < charWidth; i ++) {
byte b = teckensnitt [ch] [i];
lite förändring genom byten och mata den till stift
för (int j = 0; j < charHeight; j ++) {
digitalWrite (LEDpins [j]! (b & (1 << j)));
}
utrymmet mellan kolumner
delayMicroseconds(425);
}
klara lampor
digitalWrite (1, låg); ställa in lysdioden på
digitalWrite (2, låg). ställa in lysdioden på
digitalWrite (3, låg). ställa in lysdioden på
digitalWrite (4, låg). ställa in lysdioden på
digitalWrite (5, låg). ställa in lysdioden på
digitalWrite (6, låg). ställa in lysdioden på
digitalWrite (7, låg). ställa in lysdioden på
utrymme mellan bokstäver
delayMicroseconds(2600);
}