Arduino + LEDs + Vifte = POV "APPLAUSE" Sign: 6 trinn (med bilder)

Arduino + LEDs + Vifte = POV "APPLAUSE" Sign: 6 trinn (med bilder)

Innholdsfortegnelse:

Anonim

Jeg så disse POV (Persistence of Vision) -enhetene på andre Instruktører og trodde jeg vil gjerne lage en og jeg har alltid ønsket mitt eget "APPLAUSE" -tegn. Neste forbedring vil være å få det til å gå når jeg går inn i rommet.:) Kanskje ha det si, "Og her er Charlie!" Men det er for en annen gang.

Så jeg fikk en vifte i et garasjesalg, gjorde litt lesing, fant noe kode og nedenfor er en video av min maskin i aksjon.

Jeg startet med fin kode fra en instruert av Scott Mitchell - "Arduino Bike POV", men det jeg endte opp med, er koden hans sterkt parred ned. Jeg kunne ikke få det til å fungere først og så fortsetter jeg å endre koden. Viste meg at problemet ikke hadde noe å gjøre med koden. Så jeg kommer til å gå tilbake til sin kode og prøve igjen da han er mye mer generisk og ville jobbe lettere med forskjellige setninger. Men det er for senere også.

Videoen under viser POV i aksjon. Det virker ikke så ødelagt eller frakoblet i det virkelige liv som det gjør på videoen.

forsyninger:

Trinn 1: Få ting

Elementer som brukes i dette prosjektet:

liten fan - garasje salg - 2.00

Misc tømmer - kjelleren min - 0.00

en lengde på plast 15 med 2,5 tommer - kjelleren min - 0,00

en Arduino - jeg bruker Ardweeny fra SolarBotics - ca 10.00

7 røde lysdioder - allerede hatt - 1.00

7 - 330 ohm motstander - 3,00

Hallesensor - Jeg kom fra Adafruit - US5881LUA - 2.00

1 10k motstand som skal brukes med Hall sensor - 1.00

2 magneter fra lokal hobbybutikk - 1,00

trenger også: ledning, 9v batteri, skruer, Loctite 5 min epoxy, liten PCB fra Radio Shack

Trinn 2: Begynn montering

1. Klipp en liten - 3 til 5-stykke 1/4 tommers kryssfiner og epoxieres til viftenavn. For tiden er epoxy det eneste som holder LED-samlingen til viften. Kanskje noen ledningsbånd for sikkerhet ville være bra. Jeg tror jeg vil legge dem til senere.

2. Jeg kuttet en 15 x 2,5 tommers plastbit fra noen lager jeg hadde. Blader av plast kan være hos Home Depot. Jeg gjettet bare på størrelsen og det viste seg å være ganske bra.

3. Bor 7 hull i den ene enden ca. 3/4 tomme for hverandre for lysdiodene. Jeg fant en bore størrelse som gjør at LEDene kan presses inn i hullene ganske tett. Hvis de ikke hadde passet pent, ville jeg ha brukt en dab med varmt lim for å holde på plass.

4. Sett inn de 7 LEDene i hullene.

5. Fest plasten til 3 x 5 kryssfiner med små treskruer.

Trinn 3: Fullfør vifteholderen

Dette vil avhenge av viften du bruker. Jeg kuttet et hakk ut av et stykke 1 til 6 og klarte å sette inn viftenes bakside i hakket og deretter brukt wire tie for å sikre viften til brettet. Jeg trengte å heve hele enheten, så jeg brukte et par 1 til 3 s for å bringe viften opp til der den ikke ville slå basebrettet. Jeg la til et stykke kryssfiner på baksiden, slik at effekten kunne bli bedre sett. Jeg malt så alt svart.

Trinn 4: Ardweeny & LEDS

Den Ardweeny fra Solarbotics kommer i et sett, og det krever omtrent 30 minutter å lodde stykkene sammen. Det er ment å bli brukt på brødbrett og etter at jeg har brettet ombord på kretsen, lod jeg det lette på et lite stykke PCB-brett, som jeg igjen kan legge på kryssfiner. The Ardweeny vil snurre sammen med lysdiodene.

Etter at Ardweeny er konstruert, er det på tide å ledge lysdiodene. Jeg brukte en bare kobbertråd som vanlig jordledning. Hver av de korte ledningene fra lysdiodene er loddet til kobbertråden, og kobbertråden er koblet til en bakke på Ardweeny. Fra det lengre, positive benet til lysdioden legger du en ledning til Ardweeny og inkluderer en 330 ohm motstand i kretsen.

Jeg koblet LEDene til pinnene 1,2,3,4,5,6,7 med den ytre mest LED som er koblet til pinne 1.

Etter at alle tilkoblinger er gjort, fest Ardweeny til kryssfiner. Jeg brukte en liten skru gjennom PCB.

Trinn 5: Hallsensor og batteri

Hall Sensor:

Fest Hallsensoren til plastens ende. Jeg loddet først sensoren til et lite stykke PCB og festet PCB-en til plastet med en liten skrue.

For å koble sensoren brukte jeg følgende informasjon som jeg fikk på Adafruit: "Kjører til 3,5 V opptil 24 V. For å bruke tilkoblingsenhet til pin 1 (helt til venstre), slip til pin 2 (midt) og deretter en 10K trekk opp motstand fra pin 3 til strøm. Lytt deretter på pin 3, når magnetens sørpol er nær sensorens front, vil pin 3 gå ned til 0V. Ellers vil den forbli uansett hvilken pullup-motstanden er koblet til. Intet skjer hvis en magnetens nordpol ligger i nærheten (unipolar). "

Magnet for sensoren:

Jeg festet en liten magnet til enden av en dowel og festet dowel til vifte støtte. Jeg gjorde dette på begge sider av viften. Det er viktig at en av magnetene har sin sørside vendt ut og den andre magneten har sin nordside ut.

Ide: Denne sensoren er en låsingstype, så det er enten en 1 eller en 0. Når spinnet begynner, vil den første magneten slå på lysdiodene og når den kommer til den andre magneten, slår den av. Selvfølgelig er dette i samspill med programvaren.

Lilla ledningen går til analog pin 0, svart til jord og rød til A + pin (5 volt utgang).

Batteri:

9V-batteriet skal plasseres der det vil fungere som motbalanse for spinnplast. Hvis plasten ikke er balansert ganske bra, vil den riste hele viften når den når fart. Jeg brukte en kombinasjon av gummibånd og ledningsbinder for å holde den på plass, men kan fortsatt få det ut hvis det skal byttes ut

Koble de positive og negative ledningene fra batteriet til de riktige pinnene. Jeg inkluderte en bryter slik at jeg kan slå Ardweeny av. Bryteren er festet til kryssfiner med dobbeltappet tape.

Trinn 6: Koden

Et søk på POV-prosjekter fant kode for et POV-sykkelprosjekt.

Nedenfor er det jeg brukte, men det er langt fra originalen. Originalen er mye mer omfattende og polert, men jeg begynte med sin kode og skulle gi ham kreditt.

Også skissen inneholder en font.h-fil som jeg fant etter å ha søkt på internett. Jeg er ikke sikker på at det var font.h som var en del av originalen. Jeg har tatt med min under..

// Kode for Arduino Bike POV prosjektet

// Arduino Bike POV

//

// av Scott Mitchell

// www.openobject.org

// Open Source Urbanism

//

// Copyright (C) 2008 Scott Mitchell 12-10-2008

//

// Dette programmet er gratis programvare: Du kan omfordele den og / eller endre

// det i henhold til GNU General Public License som publisert av

// Free Software Foundation, enten versjon 3 av lisensen, eller

// (etter eget valg) enhver senere versjon.

//

//============================================================

// 6/2011 tungt modifisert av c. Dubois for mitt POV prosjekt

// Hall sensor er en bryter, så jeg brukte forskjellig kode for det

// også brukt en font.h som jeg fant

// ------------------------------------------------------------

// definere alfabetet

#include "font.h"

// definer Arduino LED-pinner i bruk

const int LEDpins = {

1,2,3,4,5,6,7};

// antall lysdioder

const int charHeight = sizeof (LEDpins);

const int charWidth = 5;

// sensoroppsett

const int sensorPIN = 0; // definer Arduino sensor pin

// boolsk sensorFlag = false; // butikker sensor tilstand

int sensVal; // variabel for å lagre verdien som kommer fra sensoren

const char textString = "APPLAUSE";

ugyldig oppsett ()

{

pinMode (13, OUTPUT);

pinMode (1, OUTPUT);

pinMode (2, OUTPUT);

pinMode (3, OUTPUT);

pinMode (4, OUTPUT);

pinMode (5, OUTPUT);

pinMode (6, OUTPUT);

pinMode (7, OUTPUT);

// Serial.begin (9600);

}

tomromsløyfe ()

{

// slå på Led for en sirkel i midten og bevis på at arduino er drevet

digitalWrite (13, HIGH); // sett lysdioden på

sensVal = analogRead (sensorPIN); // Les Hall Effect Sensor

// Serial.println (sensVal);

// forsinkelse (500);

// hadde problemer her

// siden det er en bryter hall bryter sannsynligvis shoiuld bare gjøre digital lese

hvis (sensVal! = 1023) {

// utskrift hvert brev i textString

for (int k = 0; k

printLetter (textString k);

}

}

}

void printLetter (char ch)

{

// sørg for at tegnet er innenfor alfabetgrensen (definert av font.h-filen)

// hvis det ikke er, gjør det til et tomt tegn

hvis (ch <32 || ch> 126) {

ch = 32;

}

// trekke mellomromkarakteren (konverterer ASCII-nummer til fontindeksnummeret)

ch - = 32;

// gå gjennom hver byte av tegnserien

for (int i = 0; i

byte b = font ch i;

// bit skift gjennom byte og utdata den til pinnen

for (int j = 0; j

digitalWrite (LEDpins j, !! (b & (1 << j)));

}

// mellomrom mellom kolonner

delayMicroseconds (900);

}

// Fjern lysdiodene

digitalWrite (1, LOW); // sett lysdioden på

digitalWrite (2, LOW); // sett lysdioden på

digitalWrite (3, LOW); // sett lysdioden på

digitalWrite (4, LOW); // sett lysdioden på

digitalWrite (5, LOW); // sett lysdioden på

digitalWrite (6, LOW); // sett lysdioden på

digitalWrite (7, LOW); // sett lysdioden på

// mellomrom mellom bokstaver

delayMicroseconds (2500);

}

--------------------------------------

----------------------------------------

///============================================================

// Arduino Bike POV

// font.h

//

// av Scott Mitchell

// www.openobject.org

// Open Source Urbanism

//

// Copyright (C) 2008 Scott Mitchell 12-10-2008

//

// Dette programmet er gratis programvare: Du kan omfordele den og / eller endre

// det i henhold til GNU General Public License som publisert av

// Free Software Foundation, enten versjon 3 av lisensen, eller

// (etter eget valg) enhver senere versjon.

//

// Dette programmet er distribuert i håp om at det vil være nyttig, // men uten noen garanti uten selv den underforståtte garantien av

// SALGBARHET ELLER EGNETHET TIL ET BESTEMT FORMÅL. Se

// GNU General Public License for flere detaljer.

//

// En kopi av GNU General Public License

// kan bli funnet på .

//

// B4.1

// Sist endret: 13. oktober 2008

//============================================================

// definere alfabetet

// ascii 7x5 sidemating tegn for ledede moduler

// addapted fra

// const byte font 5 = {

const unsigned char font 95 5 = {

{0x00,0x00,0x00,0x00,0x00}, // 0x20 32

{0x00,0x00,0x6f, 0x00,0x00}, //! 0x21 33

{0x00,0x07,0x00,0x07,0x00}, // "0x22 34

{0x14,0x7f, 0x14,0x7f, 0x14}, // # 0x23 35

{0x00,0x07,0x04,0x1e, 0x00}, // $ 0x24 36

{0x23,0x13,0x08,0x64,0x62}, //% 0x25 37

{0x36,0x49,0x56,0x20,0x50}, // og 0x26 38

{0x00,0x00,0x07,0x00,0x00}, // '0x27 39

{0x00,0x1c, 0x22,0x41,0x00}, // (0x28 40

{0x00,0x41,0x22,0x1c, 0x00}, //) 0x29 41

{0x14,0x08,0x3e, 0x08,0x14}, // * 0x2a 42

{0x08,0x08,0x3e, 0x08,0x08}, // + 0x2b 43

{0x00,0x50,0x30,0x00,0x00}, //, 0x2c 44

{0x08,0x08,0x08,0x08,0x08}, // - 0x2d 45

{0x00,0x60,0x60,0x00,0x00}, //. 0x2e 46

{0x20,0x10,0x08,0x04,0x02}, // / 0x2f 47

{0x3e, 0x51,0x49,0x45,0x3e}, // 0 0x30 48

{0x00,0x42,0x7f, 0x40,0x00}, // 1 0x31 49

{0x42,0x61,0x51,0x49,0x46}, // 2 0x32 50

{0x21,0x41,0x45,0x4b, 0x31}, // 3 0x33 51

{0x18,0x14,0x12,0x7f, 0x10}, // 40x34 52

{0x27,0x45,0x45,0x45,0x39}, // 5 0x35 53

{0x3c, 0x4a, 0x49,0x49,0x30}, // 6 0x36 54

{0x01,0x71,0x09,0x05,0x03}, // 7 0x37 55

{0x36,0x49,0x49,0x49,0x36}, // 8 0x38 56

{0x06,0x49,0x49,0x29,0x1e}, // 9 0x39 57

{0x00,0x36,0x36,0x00,0x00}, //: 0x3a 58

{0x00,0x56,0x36,0x00,0x00}, //; 0x3b 59

{0x08,0x14,0x22,0x41,0x00}, // <0x3c 60

{0x14,0x14,0x14,0x14,0x14}, // = 0x3d 61

{0x00,0x41,0x22,0x14,0x08}, //> 0x3e 62

{0x02,0x01,0x51,0x09,0x06}, //? 0x3f 63

{0x3e, 0x41,0x5d, 0x49,0x4e}, // @ 0x40 64

{0x7e, 0x09,0x09,0x09,0x7e}, // A 0x41 65

{0x7f, 0x49,0x49,0x49,0x36}, // B 0x42 66

{0x3e, 0x41,0x41,0x41,0x22}, // C 0x43 67

{0x7f, 0x41,0x41,0x41,0x3e}, // D 0x44 68

{0x7f, 0x49,0x49,0x49,0x41}, // E 0x45 69

{0x7f, 0x09,0x09,0x09,0x01}, // F 0x46 70

{0x3e, 0x41,0x49,0x49,0x7a}, // G 0x47 71

{0x7f, 0x08,0x08,0x08,0x7f}, // H 0x48 72

{0x00,0x41,0x7f, 0x41,0x00}, // I 0x49 73

{0x20,0x40,0x41,0x3f, 0x01}, // J 0x4a 74

{0x7f, 0x08,0x14,0x22,0x41}, // K 0x4b 75

{0x7f, 0x40,0x40,0x40,0x40}, // L 0x4c 76

{0x7f, 0x02,0x0c, 0x02,0x7f}, // M 0x4d 77

{0x7f, 0x04,0x08,0x10,0x7f}, // N 0x4e 78

{0x3e, 0x41,0x41,0x41,0x3e}, // 0 0x4f 79

{0x7f, 0x09,0x09,0x09,0x06}, // P 0x50 80

{0x3e, 0x41,0x51,0x21,0x5e}, // Q 0x51 81

{0x7f, 0x09,0x19,0x29,0x46}, // R 0x52 82

{0x46,0x49,0x49,0x49,0x31}, // S 0x53 83

{0x01,0x01,0x7f, 0x01,0x01}, // T 0x54 84

{0x3f, 0x40,0x40,0x40,0x3f}, // U 0x55 85

{0x0f, 0x30,0x40,0x30,0x0f}, // V 0x56 86

{0x3f, 0x40,0x30,0x40,0x3f}, // W 0x57 87

{0x63,0x14,0x08,0x14,0x63}, // X 0x58 88

{0x07,0x08,0x70,0x08,0x07}, // Y 0x59 89

{0x61,0x51,0x49,0x45,0x43}, // Z 0x5a 90

{0x3c, 0x4a, 0x49,0x29,0x1e}, // 0x5b 91

{0x02,0x04,0x08,0x10,0x20}, // 0x5c 92

{0x00,0x41,0x7f, 0x00,0x00}, // 0x5d 93

{0x04,0x02,0x01,0x02,0x04}, // ^ 0x5e 94

{0x40,0x40,0x40,0x40,0x40}, // _ 0x5f 95

{0x00,0x00,0x03,0x04,0x00}, // `0x60 96

{0x20,0x54,0x54,0x54,0x78}, // a 0x61 97

{0x7f, 0x48,0x44,0x44,0x38}, // b 0x62 98

{0x38,0x44,0x44,0x44,0x20}, // c 0x63 99

{0x38,0x44,0x44,0x48,0x7f}, // d 0x64 100

{0x38,0x54,0x54,0x54,0x18}, // e 0x65 101

{0x08,0x7e, 0x09,0x01,0x02}, // f 0x66 102

{0x0c, 0x52,0x52,0x52,0x3e}, // g 0x67 103

{0x7f, 0x08,0x04,0x04,0x78}, // h 0x68 104

{0x00,0x44,0x7d, 0x40,0x00}, // i 0x69 105

{0x20,0x40,0x44,0x3d, 0x00}, // j 0x6a 106

{0x00,0x7f, 0x10,0x28,0x44}, // k 0x6b 107

{0x00,0x41,0x7f, 0x40,0x00}, // l 0x6c 108

{0x7c, 0x04,0x18,0x04,0x78}, // m 0x6d 109

{0x7c, 0x08,0x04,0x04,0x78}, // n 0x6e 110

{0x38,0x44,0x44,0x44,0x38}, // o 0x6f 111

{0x7c, 0x14,0x14,0x14,0x08}, // p 0x70 112

{0x08,0x14,0x14,0x18,0x7c}, // q 0x71 113

{0x7c, 0x08,0x04,0x04,0x08}, // r 0x72 114

{0x48,0x54,0x54,0x54,0x20}, // s 0x73 115

{0x04,0x3f, 0x44,0x40,0x20}, // t 0x74 116

{0x3c, 0x40,0x40,0x20,0x7c}, // u 0x75 117

{0x1c, 0x20,0x40,0x20,0x1c}, // v 0x76 118

{0x3c, 0x40,0x30,0x40,0x3c}, // w 0x77 119

{0x44,0x28,0x10,0x28,0x44}, // x 0x78 120

{0x0c, 0x50,0x50,0x50,0x3c}, // y 0x79 121

{0x44,0x64,0x54,0x4c, 0x44}, // z 0x7a 122

{0x00,0x08,0x36,0x41,0x41}, // {0x7b 123

{0x00,0x00,0x7f, 0x00,0x00}, // | 0x7c 124

{0x41,0x41,0x36,0x08,0x00}, //} 0x7d 125

{0x04,0x02,0x04,0x08,0x04}, // ~ 0x7e 126

};

/*

Creative Commons Attribution-Noncommercial-Share Alike 2.5 Australia-lisens

Denne siden ble sist endret 14:41, 11. januar 2009. Denne siden er vist 1,477 ganger.

Innholdet er tilgjengelig under Creative Commons Attribution-Noncommercial-Share Alike 2.5 Australia-lisensen.

Om Open Source Urbanism

Forbehold

Drevet av MediaWiki

*/

Finalist i

LED-konkurranse