Table des matières:

Cravate Starry Sky Led: 9 étapes (avec photos)
Cravate Starry Sky Led: 9 étapes (avec photos)

Vidéo: Cravate Starry Sky Led: 9 étapes (avec photos)

Vidéo: Cravate Starry Sky Led: 9 étapes (avec photos)
Vidéo: ANDROMEDA GALAXY with only a Camera, Lens, & Tripod 2024, Novembre
Anonim
Image
Image
Cravate Led Ciel Étoilé
Cravate Led Ciel Étoilé
Cravate Led Ciel Étoilé
Cravate Led Ciel Étoilé

Il y a quelque temps, j'ai trouvé un jouet d'enfant avec de la fibre optique dans un magasin à un dollar et j'ai commencé à réfléchir à ce que je pouvais en faire.

Une des idées folles que j'ai eues, c'était de faire une cravate avec l'effet d'un ciel étoilé.

J'avais encore des arduino pro mini, des cartes adafruit et des batteries qui conviendraient probablement à ce projet.

Donc, dès que j'ai trouvé une belle cravate large dans un prêteur sur gages de ma ville et que j'ai trouvé une boîte qui pourrait s'adapter au matériel, j'ai décidé d'y aller et d'essayer de la construire.

Cette instructable vous montre comment je l'ai fait.

Il fonctionne sur un arduino pro mini, un chargeur adafruit powerboost 500, emmerich icr 18650nh-sp et 5 LED blanches. Le code rend le changement de luminosité de la LED aléatoire. (Les 40 premières secondes de la vidéo sont à la vitesse 3x)

Étape 1: Schémas et matériel

Schémas et matériel
Schémas et matériel
Schémas et matériel
Schémas et matériel

J'utilise le matériel suivant:

- PCB avec LED Ice white et résistances 220 Ohm.

- Arduino pro mini (j'ai utilisé une contrefaçon)

- Chargeur Adafruit Powerboost 500

- Accu Li-ion Emmerich ICR-18650NH-SP

- Fibres optiques (en différentes tailles)

Étape 2: fabrication du PCB hébergeant les LED

Fabrication du PCB hébergeant les LED
Fabrication du PCB hébergeant les LED
Fabrication du PCB hébergeant les LED
Fabrication du PCB hébergeant les LED
Faire le PCB hébergeant les LED
Faire le PCB hébergeant les LED

J'ai coupé une bande d'un PCB pour contenir les LED et utilisé les broches LED pour le souder au PCB principal.

Connecté toutes les cathodes (-) à GND et utilisé la moitié des broches pour le souder collé au PCB principal.

Connecté toutes les anodes (+) aux résistances, et avec des câbles à l'arduino.

Les LED doivent chacune être connectées à l'un des ports PWM suivants: 3, 5, 6, 9, 10, 11

J'ai fait beaucoup d'erreurs avec ce projet et j'ai oublié de vérifier les bons ports PWM, j'ai donc dû ressouder quelques-uns plus tard. Testé avec High/Low, je ne l'ai donc remarqué que plus tard.

J'ai commencé avec 7 LED, mais il n'y avait que 6 ports PWM et l'une des LED que j'ai ressoudées est morte. J'ai juste gardé les 5 LED de travail et je n'utilise pas la 6ème.

Étape 3: fabrication de la boîte

Faire la boîte
Faire la boîte
Faire la boîte
Faire la boîte
Faire la boîte
Faire la boîte
Faire la boîte
Faire la boîte

J'ai utilisé un Bosch GRO (comme un Dremel) et une perceuse pour découper la forme de la batterie, le bouton, le port micro-usb, les en-têtes de l'Arduino et les fibres optiques. (utilisez un masque anti-poussière !)

Collé la batterie au boîtier avec 2 bandes.

Vis utilisées pour monter la carte Adafruit et le PCB.

Les frottements d'ouverture et de fermeture ont endommagé certains fils. J'ai dû les ressouder et utiliser de la colle pour éviter que cela se reproduise.

Étape 4: Préparation de la cravate

Préparation de la cravate
Préparation de la cravate
Préparer la cravate
Préparer la cravate
Préparer la cravate
Préparer la cravate

Suppression des coutures de la partie inférieure de la cravate pour s'adapter à la feuille de caoutchouc.

Pour cacher le matériel et pouvoir toujours y accéder si nécessaire, j'ai décidé d'utiliser une fermeture à glissière.

Je ne suis pas douée avec une machine à coudre, alors ma douce maman a mis une fermeture éclair au dos de la cravate.

Après cela, j'ai collé la feuille de caoutchouc dans la cravate. J'avais peur d'utiliser trop de colle qui saturerait le tissu et serait visible de l'avant, alors j'ai essayé de l'égaliser et de ne pas en mettre trop. Dans l'ensemble, cela a l'air bien, mais à quelques endroits, j'ai remarqué trop ou trop peu de colle, car elle passait à travers le tissu ou n'adhérait pas très bien au tissu. Heureusement, ce n'est qu'à peine visible de près en pleine lumière.

La boîte et la cravate sont maintenant terminées. Il est temps de coller les fibres optiques !

Étape 5: Coller les fibres optiques

Coller les fibres optiques
Coller les fibres optiques
Coller les fibres optiques
Coller les fibres optiques
Coller les fibres optiques
Coller les fibres optiques
Coller les fibres optiques
Coller les fibres optiques

Le jouet avait un gros faisceau de fils de fibre optique qui se séparait facilement. J'ai essayé de les coller un par un au début, mais j'ai vite remarqué qu'il serait préférable de faire des petits paquets et de les coller à la LED en une seule fois. Cela faciliterait la stabilité jusqu'à ce que la colle soit sèche. J'ai foiré la première LED pour comprendre cela.

Assurez-vous d'utiliser une colle transparente! Celui que j'ai utilisé a séché très lentement et la colle à séchage rapide que j'ai essayée sur la première LED est devenue blanche, rendant certaines fibres de la première LED moins lumineuses.

J'ai collé de petites feuilles de caoutchouc noir pour éviter les fuites de lumière sur le dessus et pour séparer les LED.

L'une des feuilles empêchait le boîtier de se fermer, j'ai donc ajouté un élastique pour maintenir le couvercle fermé.

Étape 6: Mettre la fibre optique à travers la cravate

Mettre la fibre optique à travers la cravate
Mettre la fibre optique à travers la cravate
Mettre la fibre optique à travers la cravate
Mettre la fibre optique à travers la cravate
Mettre la fibre optique à travers la cravate
Mettre la fibre optique à travers la cravate

En partant du bas, j'ai pincé des trous avec une aiguille et j'ai passé les fibres une à une. Les fibres de chaque LED se répartissent au hasard sur la cravate.

J'ai collé une bande noire à l'arrière qui devait aller jusqu'à la plus petite partie de l'attache pour garder le poids de la boîte, mais après avoir passé tous les fils et senti la tension des fils, j'ai décidé de coller tout à la cravate était une meilleure idée et a coupé la bande.

Étant donné que les fils de fibre optique du jouet étaient si courts, il était difficile de les ajuster sur toute la cravate. J'étais limité dans le positionnement de la boîte et j'ai eu du mal à tout rendre aussi plat que je le voulais.

Étape 7: Coller les fibres optiques à la cravate

Coller les fibres optiques à la cravate
Coller les fibres optiques à la cravate
Coller les fibres optiques à la cravate
Coller les fibres optiques à la cravate
Coller les fibres optiques à la cravate
Coller les fibres optiques à la cravate
Coller les fibres optiques à la cravate
Coller les fibres optiques à la cravate

J'ai collé tous les fils de fibre optique sur la feuille de caoutchouc pour éviter que les fils ne se détachent de la feuille de caoutchouc et pour rendre l'attache plate.

Pour m'assurer que je n'ai pas collé la pince à la cravate en appuyant dessus, j'ai mis du papier entre les deux. Ça n'a pas l'air génial mais ça marche bien. Et vous ne le voyez pas quand il est fermé.

Une fois la colle séchée, j'ai coupé les fils sur le devant et un peu la feuille de caoutchouc juste au-dessus du fil le plus haut, car l'attache était un peu trop longue.

Les photos avec la chemise blanche sont faites avant que je coupe ce dernier morceau de caoutchouc.

Étape 8: Le code

Ci-dessous le code que j'ai écrit pour la cravate.

Toutes les LED ont un réglage "moyenne" (pas réellement une moyenne mais une luminosité moyenne).

Dès qu'il atteindra cette moyenne, il décidera avec 3/4 de chance de passer à une luminosité inférieure. Il définit également de manière aléatoire une nouvelle luminosité minimale, une luminosité maximale, un temps d'attente pour la luminosité minimale et maximale et la vitesse à laquelle il augmente ou diminue à chaque tour (1-255) à partir de 5 valeurs prédéfinies. Ensuite, il effectuera un cycle jusqu'à ce qu'il atteigne à nouveau la moyenne. Seules 2 LED peuvent être dans un cycle élevé en même temps.

Chaque état est représenté par une valeur entière (1-7) déterminant s'il va en moyenne-faible, faible-moyenne, en attente faible, mise à jour, etc.

Pour plus d'informations sur le téléchargement de code sur l'arduino, veuillez consulter www.arduino.cc

/* Starry Sky Tie * * Il s'agit d'un script pour faire disparaître au hasard 5 LED d'une luminosité moyenne à une luminosité inférieure * ou supérieure avec des paramètres aléatoires inférieurs, supérieurs et de synchronisation * pour ressembler à un ciel étoilé lorsqu'il est utilisé avec des fibres optiques. * Dans ce cas, ceux-ci seront mis en œuvre dans une égalité. * * Chance haut/bas = 1/4 en haut, 3/4 en bas, avec un maximum de 2 * allant jusqu'au max en même temps. * * La moyenne reste la même. * Les options minimum, maximum et de synchronisation changent de manière aléatoire * à partir de 5 options chaque fois qu'une LED atteint à nouveau la moyenne. * * Créé par Billy Jaspers, mai 2019. *

/ Déclarer les épingles

int LED01 = 3; int LED02 = 5; int LED03 = 6; int LED04 = 9; int LED05 = 11;

// Variables de temps

currentTime long non signé; temps d'attente long non signé[5]; non signé long lastRound;

// Variables LED

int BrightMin [5] = { 10, 10, 10, 10, 10 }; // Luminosité minimale int brightAvg [5] = { 200, 200, 200, 200, 200 }; // Luminosité moyenne int brightMax[5] = { 240, 240, 240, 240, 240 }; // Luminosité maximale int timeWaitLow[5] = { 1000, 1000, 1000, 1000, 1000 }; // Temps d'attente int timeWaitAvg[5] = { 5000, 5000, 5000, 5000, 5000 }; // Temps d'attente int timeWaitMax[5] = { 4000, 3000, 3000, 3000, 3000 }; // Temps d'attente int increment[5] = { 2, 5, 4, 5, 2 }; // Incrément de luminosité int currentBright[5]= { 200, 230, 210, 210, 235 }; // Luminosité actuelle

// Possibilités de variables LED

int BrightMinPos[5] = { 5, 20, 40, 5, 20 }; // Possibilités de luminosité minimale int brightMaxPos[5] = { 240, 245, 230, 225, 245 }; // Possibilités de luminosité maximales int timeLowPos[5] = { 3000, 5000, 4000, 2000, 1000 }; // Temps d'attente sur les possibilités de faible luminosité int timeHighPos[5] = { 3000, 1000, 500, 2000, 4000 }; // Temps d'attente sur les possibilités de luminosité élevée int timeAvgPos[5] = { 3000, 5000, 4000, 7000, 8000 }; // Temps d'attente sur les possibilités de luminosité moyenne int incrementPos[5] = { 2, 4, 5, 3, 1 }; // augmentation des possibilités de luminosité

// Variables

bool démarrage = vrai; // Les paramètres de démarrage doivent-ils être démarrés ?

// Variables directionnelles

/* 0 = Attente à la moyenne 1 = va Moy à Low 2 = attend Low 3 = passe Low à Moy 4 = passe Moy à Max 5 = attend à Max 6 = passe High à Moy 7 = Mise à jour des variables*/ int statusLED[5] = { 0, 0, 0, 0, 0 }; int montantHighLED = 0; taux de rafraîchissement int = 50; bool statusWaiting[5] = { false, false, false, false, false}; // La Led attend ?

// Variables aléatoires

nombre aléatoire long; // Long pour stocker un nombre aléatoire long randomNumberTwo; // Long pour stocker le deuxième nombre aléatoire

// compteurs

entier je = 0; // Compteur pour la boucle principale

void setup() {

Serial.begin (115200); // Démarrer série randomSeed(analogRead(A0)); // Définir une graine aléatoire

// Déclarer les sorties

pinMode (LED01, SORTIE); pinMode (LED02, SORTIE); pinMode (LED03, SORTIE); pinMode (LED04, SORTIE); pinMode (LED05, SORTIE); }

// Écrire des données dans les LED

void writeToLED(){ analogWrite(LED01, currentBright[0]); analogWrite(LED02, currentBright[1]); analogWrite(LED03, currentBright[2]); analogWrite(LED04, currentBright[3]); analogWrite(LED05, currentBright[4]); }

// Boucle principale

void loop() { if (startup){ // Paramètres de démarrage lastRound = millis(); // Définir lastRound pour le démarrage writeToLED(); // Écrire les données de démarrage dans la LED startup = false; // Désactiver le démarrage } currentTime = millis(); // Définir l'heure actuelle

if (currentTime - lastRound >= refreshRate){

for (i=0;i<5;i++){ if (statusLED == 7){ // -7- Mise à jour de la Led randomNumber = random(5); BrightMin = brightMinPos[randomNumber]; // Définir une valeur aléatoire pour la luminosité minimale randomNumber = random(5); brightMax = brightMaxPos[randomNumber]; // Définir une valeur aléatoire pour la luminosité maximale randomNumber = random(5); timeWaitLow = timeLowPos[randomNumber]; // Définir une valeur aléatoire pour un temps d'attente réduit randomNumber = random(5); timeWaitMax = timeHighPos[randomNumber]; // Définir une valeur aléatoire pour un temps d'attente élevé randomNumber = random(5); timeWaitAvg = timeAvgPos[randomNumber]; // Définir une valeur aléatoire pour le temps d'attente moyen randomNumber = random(5); incrément = incrémentPos[randomNumber]; // Définir une valeur aléatoire pour la valeur d'incrément randomNumber = random(2); // Définir une valeur aléatoire pour la direction randomNumberTwo = random(2); // Définir une valeur aléatoire pour la direction if (randomNumber == 1 && randomNumberTwo == 0 && amountHighLED = brightAvg){ statusLED = 0; // Si au point le plus bas: aller à Waiting Avg }else{ currentBright = currentBright+increment; // Sinon: Plus haute luminosité } }else if (statusLED == 2){ // -2- Waiting Low if (!statusWaiting){ // Si pas d'attente: waitTime = millis(); // Définir le temps d'attente statusWaiting = true; // Commence à attendre }else if(statusWaiting && currentTime-waitingTime >= timeWaitLow){ // Si l'attente ET timeWaitAvg est passé: statusWaiting = false; // Arrêter l'attente statusLED = 3; // Définir statusLed sur En attente de mise à jour } } else if (statusLED == 1){ // -1- Going Moy to Low if (currentBright <= brightMin){ statusLED = 2; // Si au point le plus bas: Aller à Waiting Low }else{ currentBright = currentBright-increment; // Else: Lower Brightness } }else if (statusLED == 6){ // -6- Going Max to Avg if (currentBright = timeWaitMax){ // Si l'attente ET timeWaitAvg est passée: statusWaiting = false; // Arrêter l'attente statusLED = 6; // Définir statusLed sur En attente de mise à jour } } else if (statusLED == 4){ // -4- Going Avg to Max if (currentBright >= brightMax){ statusLED = 5; // Si au point le plus bas: Aller à Waiting High }else{ currentBright = currentBright+increment; // Else: Higher Brightness } }else if (statusLED == 0){ // -0- Attente moyenne if (!statusWaiting){ // Si pas d'attente: waitTime = millis(); // Définir le temps d'attente statusWaiting = true; // Commence à attendre }else if(statusWaiting && currentTime-waitingTime >= timeWaitAvg){ // Si l'attente ET timeWaitAvg est passé: statusWaiting = false; // Arrêter l'attente statusLED = 7; // Définir statusLed sur En attente de mise à jour } } } i=0; dernierRound = millis(); // Défini quand le dernier tour est terminé. writeToLED(); // Écrire toutes les données dans les LED } }

Étape 9: Produit final

Image
Image
Produit final
Produit final
Produit final
Produit final

Je pense que ça a bien marché. La cravate n'est pas trop épaisse, rigide, longue ou lourde et l'effet étoile est incroyable.

Conseillé: