Arduino + LEDs + Fan = POV Signe "APPLAUSE": 6 étapes (avec photos)

Arduino + LEDs + Fan = POV Signe "APPLAUSE": 6 étapes (avec photos)

Table des matières:

Anonim

J'ai vu ces dispositifs POV (Persistence of Vision) sur d'autres ordinateurs Instructables et je pensais que j'aimerais en créer un. J'ai toujours voulu mon propre signe "APPLAUSE". La prochaine amélioration consistera à le faire fonctionner à chaque fois que j'entrerai dans la pièce.:) Peut-être qu'il dit: "Et voici Charlie!" Mais c'est pour une autre fois.

Alors, j'ai eu un fan lors d'une vente de garage, fait de la lecture, trouvé du code et voici une vidéo de ma machine en action.

J'ai commencé avec un bon code d'un Instructable de Scott Mitchell - "Arduino Bike POV", mais ce que j'ai fini par obtenir, c'est son code grandement réduit. Je ne pouvais pas le faire fonctionner au début et je continue donc à changer le code. Il s'est avéré que mon problème n'avait rien à voir avec le code. Je vais donc revenir à son code et réessayer car il est beaucoup plus générique et fonctionnerait plus facilement avec des phrases différentes. Mais c'est pour plus tard aussi.

La vidéo ci-dessous montre le POV en action. Il ne semble pas aussi brisé ou déconnecté dans la vie réelle que sur la vidéo.

Provisions:

Étape 1: Obtenez des choses

Articles utilisés dans ce projet:

petit ventilateur - vente de garage - 2.00

misc lumber - mon sous-sol - 0,00

une longueur de plastique de 15 x 2,5 pouces - mon sous-sol - 0,00

un Arduino - J'utilise un Ardweeny de SolarBotics - environ 10h00

7 LED rouges - déjà eu - 1.00

7 - résistances de 330 ohms - 3.00

Capteur Halls - J'ai reçu d'Adafruit - US5881LUA - 2.00

1 résistance 10k à utiliser avec le capteur de Halls - 1,00

2 aimants du magasin de loisirs local - 1,00

également besoin de: fil, batterie 9v, vis, époxy Loctite 5 min, petit circuit imprimé de Radio Shack

Étape 2: commencer l'assemblage

1. Découpez un petit morceau de contreplaqué de 1/4 de pouce - 3 pièces sur 5 - époxydé sur le moyeu du ventilateur. À l’heure actuelle, l’époxy est la seule chose qui retient l’ensemble LED au ventilateur. Peut-être que des liens métalliques pour la sécurité seraient bien. Je pense que je les ajouterai plus tard.

2. J'ai coupé un morceau de plastique de 15 par 2,5 pouces à partir d'un stock que j'avais. Vous pouvez vous procurer des feuilles de plastique chez Home Depot. Je viens de deviner à la taille et il s'est avéré être très bon.

3. Percez 7 trous dans une extrémité à environ 3/4 de pouce l'un de l'autre pour les DEL. J'ai trouvé une taille de foret permettant aux LED d'être enfoncées assez étroitement dans les trous. S'ils ne correspondaient pas bien, j'aurais utilisé une goutte de colle chaude pour tenir en place.

4. Insérez les 7 LED dans les trous.

5. Fixez le plastique au contreplaqué 3 × 5 à l’aide de petites vis à bois.

Étape 3: terminer le support de ventilateur

Cela dépendra du ventilateur que vous utilisez. J'ai découpé une encoche dans un morceau de 1 sur 6 et j'ai réussi à insérer l'arrière du ventilateur dans l'encoche, puis j'ai utilisé une attache en fil métallique pour fixer le ventilateur au tableau. J'avais besoin de soulever toute l'unité, alors j'ai utilisé un couple de 1 sur 3 pour amener le ventilateur à un endroit où il ne toucherait pas le tableau de base. J'ai ajouté un morceau de contreplaqué à l'arrière pour que l'effet soit mieux vu. J'ai ensuite tout peint en noir.

Étape 4: Ardweeny & LEDS

Le Ardweeny de Solarbotics est livré dans un kit et il faut environ 30 minutes pour souder les pièces ensemble. Il est destiné à être utilisé sur une planche à pain et une fois le circuit monté, je le soude sur un petit morceau de circuit imprimé que je peux ensuite fixer au contreplaqué. L'Ardweeny va tourner avec les LED.

Une fois l’Ardweeny construit, il est temps de câbler les voyants. J'ai utilisé un fil de cuivre nu comme fil de terre commun. Chacun des fils courts des LED est soudé au fil de cuivre, qui est ensuite connecté à la terre sur l’Ardweeny. À partir du bras positif le plus long de la LED, connectez un fil à l’Ardweeny et incluez une résistance de 330 ohms dans le circuit.

J'ai connecté les DEL aux broches 1, 2, 3, 4, 5, 6, 7, la plus extérieure étant connectée à la broche 1.

Une fois toutes les connexions établies, fixez l’Ardweeny au contreplaqué. J'ai utilisé une petite vis à travers le circuit imprimé.

Étape 5: Capteur de halls et batterie

Capteur Hall:

Fixez le capteur à effet Halls à la fin du plastique. J'ai d'abord soudé le capteur à un petit morceau de circuit imprimé, puis attaché le circuit imprimé au plastique à l'aide d'une petite vis.

Pour connecter le capteur, j'ai utilisé les informations suivantes, que j'ai obtenues chez Adafruit: "Fonctionne de 3,5V à 24V. Pour utiliser, branchez l’alimentation sur la broche 1 (complètement à gauche), reliez-la à la broche 2 (au milieu), puis une résistance de traction de 10 K de la broche 3 à l'alimentation. Écoutez ensuite sur la broche 3, lorsque le pôle sud d'un aimant se trouve près de l'avant du capteur, la broche 3 descend à 0 V. Sinon, elle reste inchangée quelle que soit la résistance d'extraction connectée. Rien ne se produit si le pôle nord d'un aimant est à proximité (unipolaire). "

Aimant pour le capteur:

J'ai attaché un petit aimant au bout d'un goujon et attaché le goujon au support de ventilateur. Je l'ai fait des deux côtés du ventilateur. Il est important que l'un des aimants ait son côté sud orienté vers l'extérieur et que l'autre aimant possède son côté nord.

idée: ce capteur est du type à verrouillage, donc 1 ou 0. Lorsque le spin commence, le premier aimant allume les DEL et s’il parvient à l’autre aimant, il les éteint. Bien sûr, cela est de concert avec le logiciel.

Le fil violet passe à la broche analogique 0, le noir à la terre et le rouge à la broche A + (sortie 5 volts).

Batterie:

La pile 9V doit être placée à un endroit où elle agira comme un contrepoids pour le plastique en rotation. Si le plastique n'est pas assez bien équilibré, il secouera tout le ventilateur quand il atteindra la vitesse. J'ai utilisé une combinaison d'élastiques et d'attaches en fil métallique pour le maintenir en place, mais je peux quand même le retirer s'il doit être remplacé.

Câblez les fils positif et négatif de la batterie aux broches appropriées. J'ai inclus un interrupteur pour pouvoir éteindre l'Ardweeny. L'interrupteur est attaché au contreplaqué avec du ruban adhésif double face.

Étape 6: le code

Une recherche de projets POV a trouvé le code d'un projet de vélo POV.

Ci-dessous, ce que j’ai utilisé mais c’est loin de l’original. L'original est beaucoup plus complet et perfectionné, mais j'ai commencé avec son code et je devrais lui donner crédit.

Le croquis comprend également un fichier font.h que j'ai trouvé après une recherche sur Internet. Je ne suis pas sûr que c’était la fonte.h qui faisait partie de l’original. J'ai inclus le mien ci-dessous..

// Code pour le projet Arduino Bike POV

// Arduino Bike POV

//

// par Scott Mitchell

// www.openobject.org

// Urban Source Open

//

// Droits d'auteur (C) 2008 Scott Mitchell 12-10-2008

//

// Ce programme est un logiciel libre: vous pouvez le redistribuer et / ou modifier

// sous les termes de la licence publique générale GNU telle que publiée par

// la Free Software Foundation, soit la version 3 de la licence, soit

// (à votre choix) toute version ultérieure.

//

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

// 6/2011 fortement modifié par c. Dubois pour mon projet POV

// Le capteur à effet Hall est un commutateur, j'ai donc utilisé un code différent pour cela.

// aussi utilisé un font.h que j'ai trouvé

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

// définition de l'alphabet

#include "font.h"

// définit les pins LED Arduino utilisés

const int LEDpins = {

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

// nombre de LED

const int charHeight = sizeof (LEDpins);

const int charWidth = 5;

// configuration du capteur

const int sensorPIN = 0; // définir la broche du capteur Arduino

// booléen sensorFlag = false; // stocke l'état du capteur

int sensVal; // variable pour stocker la valeur provenant du capteur

const char textString = "APPLAUSE";

void setup()

{

pinMode (13, OUTPUT);

pinMode (1, OUTPUT);

pinMode (2, OUTPUT);

pinMode (3, OUTPUT);

pinMode (4, OUTPUT);

pinMode (5, OUTPUT);

pinMode (6, OUTPUT);

pinMode (7, OUTPUT);

// numéro de série (9600);

}

boucle vide ()

{

// allume Led pour un cercle au milieu et preuve qu'arduino est alimenté

digitalWrite (13, HAUT); // allume le voyant

sensVal = analogRead (sensorPIN); // lire le capteur à effet Hall

// Serial.println (sensVal);

// delay (500);

// a eu des difficultés ici

// puisqu'il s'agit d'un commutateur dans le hall de commutation, il devrait probablement être en lecture numérique

si (sensVal! = 1023) {

// imprimer chaque lettre de la chaîne de texte

pour (int k = 0; k

printLetter (textString k);

}

}

}

void printLetter (char ch)

{

// vérifie que le caractère est dans les limites de l'alphabet (défini par le fichier font.h)

// si ce n'est pas le cas, en faire un blanc

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

ch = 32;

}

// soustrayez le caractère espace (convertit le numéro ASCII en numéro d'index de police)

ch - = 32;

// passe en revue chaque octet du tableau de caractères

pour (int i = 0; i

octet b = font ch i;

// décalage de bit dans l'octet et sortie vers la broche

pour (int j = 0; j

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

}

// espace entre les colonnes

délaiMicrosecondes (900);

}

// efface les voyants

digitalWrite (1, BAS); // allume le voyant

digitalWrite (2, FAIBLE); // allume le voyant

digitalWrite (3, FAIBLE); // allume le voyant

digitalWrite (4, FAIBLE); // allume le voyant

digitalWrite (5, FAIBLE); // allume le voyant

digitalWrite (6, LOW); // allume le voyant

digitalWrite (7, BAS); // allume le voyant

// espace entre les lettres

délaiMicrosecondes (2500);

}

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

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

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

// Arduino Bike POV

// font.h

//

// par Scott Mitchell

// www.openobject.org

// Urban Source Open

//

// Droits d'auteur (C) 2008 Scott Mitchell 12-10-2008

//

// Ce programme est un logiciel libre: vous pouvez le redistribuer et / ou modifier

// sous les termes de la licence publique générale GNU telle que publiée par

// la Free Software Foundation, soit la version 3 de la licence, soit

// (à votre choix) toute version ultérieure.

//

// Ce programme est distribué dans l'espoir qu'il vous sera utile, // mais SANS AUCUNE GARANTIE; sans même la garantie implicite de

// QUALITÉ MARCHANDE ou ADAPTATION À UN USAGE PARTICULIER. Voir le

// Licence publique générale GNU pour plus de détails.

//

// Une copie de la licence publique générale GNU

// peut être trouvé à .

//

// B4.1

// Dernière mise à jour: le 13 octobre 2008

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

// définition de l'alphabet

// caractères latéraux ascii 7x5 pour les modules led

// ajouté depuis

// const byte font 5 = {

police de caractères const unsigned 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}, // & 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}, // 4 0x34 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}, // O 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}, // un 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 Paternité-Pas d'utilisation commerciale-Partage à l'identique 2.5 Australie Licence

Cette page a été modifiée pour la dernière fois le 11 janvier 2009 à 14h41. Cette page a été consultée 1 477 fois.

Le contenu est disponible sous licence Creative Commons Paternité-Pas d'utilisation commerciale-partage à l'identique 2.5 Australie.

À propos de l'urbanisme open source

Avertissements

Propulsé par MediaWiki

*/

Finaliste au

Concours LED