Projet:PersistenceOfGlitch

De Le Glitch Wiki
Aller à : navigation, rechercher

TL;DR

Le projet Persistence Of Glitch vise à créer un simple afficheur rotatif basé sur le principe de persistance rétinienne (POV !). Le proto est un afficheur à 5 LEDs monochromes.

 

 

Carte d'identité

Technologies : Arduino
Initiateur du projet : GKS
Contributeurs : GKS
Difficulté : 3 poulpe
Date de début : Janvier 2017
Date de dernière mise à jour : Janvier 2017

Illustrations

POG v1 avant assemblage

 

 

 

Matos

  • carton/bois
  • moteur courant continu (récupéré d'une imprimante, pas de ref)
  • arduino pro micro
  • capteur à effet Hall (SS466A) + aimant(s)
  • ressort + charbon + plaque de cuivre
  • LEDs rouges (x5)
  • résistances (5 x 200Ω + 1 x 10KΩ)

 

Schéma électronique

 

 

 

Firmware et / ou logiciel

 

int timer = 800;    
int offsetTimer = 5000;

int ledfirst = 2;
int ledlast = 6;
int Hall = 7;
int pinpow = 8;
int State = 0;         
int lastState = 0;

boolean space[]={0,0,0,0,0};   
boolean G[]={1,1,1,1,1, 1,0,0,0,1, 1,0,1,0,1, 1,1,1,0,1};
boolean L[]={1,1,1,1,1, 1,0,0,0,0, 1,0,0,0,0};
boolean I[]={1,0,0,0,1, 1,1,1,1,1, 1,0,0,0,1};
boolean T[]={0,0,0,0,1, 1,1,1,1,1, 0,0,0,0,1};
boolean C[]={1,1,1,1,1, 1,0,0,0,1, 1,0,0,0,1};
boolean H[]={1,1,1,1,1, 0,0,1,0,0, 1,1,1,1,1};
boolean  exclmark[]={1,0,1,1,1, 1,0,1,1,1};
boolean questmark[]={0,0,0,1,1, 1,0,1,1,1, 0,0,0,1,1};
 
/*
boolean  quote[]={0,0,0,1,1};
boolean R[]={1,1,1,1,1, 0,1,1,0,1, 1,0,1,1,1};
boolean E[]={1,1,1,1,1, 1,0,1,0,1, 1,0,1,0,1};
boolean A[]={1,1,1,1,1, 0,0,1,0,1, 1,1,1,1,1};
boolean S[]={1,0,1,1,1, 1,0,1,0,1, 1,1,1,0,1};
boolean O[]={1,1,1,1,1, 1,0,0,0,1, 1,1,1,1,1};
boolean K[]={1,1,1,1,1, 0,1,0,1,0, 1,0,0,0,1};
boolean D[]={1,1,1,1,1, 1,0,0,0,1, 0,1,1,1,0};
*/
int m;

void setup() {
  //Serial.begin(9600);
  for (int Pin = ledfirst; Pin <=ledlast; Pin++) {
    pinMode(Pin, OUTPUT);
  }
  pinMode(Hall, INPUT);
  pinMode(pinpow, OUTPUT);
  digitalWrite(pinpow,HIGH);
}

void loop() {
  
State = digitalRead(Hall);
//  Serial.println(State);
//
//if (State == LOW){
//  digitalWrite(pinpow,LOW);
//  delay(1);
//  digitalWrite(pinpow,HIGH);
//  lastState = State;
//}
if (State != lastState){
  if (State == HIGH){
    delayMicroseconds(offsetTimer);
    WriteLetter(G,3);
    WriteLetter(space,1);
    WriteLetter(L,2);
    WriteLetter(space,1);
    WriteLetter(I,3);
    WriteLetter(space,1);
    WriteLetter(T,3);
    WriteLetter(space,1);
    WriteLetter(C,3);
    WriteLetter(space,1);
    WriteLetter(H,3);
    WriteLetter(space,1);
    WriteLetter(exclmark,2);
    WriteLetter(space,1);
  }
}
lastState = State;
}

void WriteLetter(boolean letter[], int w){
  m=0;
  for (int n=0; n<w; n++){
     for (int Pin = ledfirst; Pin <=ledlast; Pin++) {
        digitalWrite(Pin, letter[m]);
        m=m+1;
     }
     delayMicroseconds(timer);
     //delay(200);
  }
}

 

Documentation

 

Licence du projet