top of page
278835239_3172113703042747_5729774136890659959_n.jpeg
278588342_530667448453015_2319486241988874881_n.jpeg

Démonstration
 

Version simple sans capteur

La machine de Goldberg

Définition

Une machine de Rube Goldberg (ou plus simplement machine de Goldberg) est une machine qui réalise une tâche simple d’une manière délibérément complexe, le plus souvent à l’aide d’une réaction en chaine. Elle tire son nom du dessinateur américain Rube Goldberg (1883-1970) et est proche des engins de William Heath Robinson.

Un feu tricolore sensible aux vibrations

Chaque élément de la machine de Goldberg étant constitué d'un capteur et d'un activateur, je me suis lancée dans la conception d'un feu tricolore où trois Led jouent le rôle d'activateurs pour l'élément suivant et où un capteur de vibrations reçoit les vibrations de l'élément précédent. 

Machine de Goldberg

Machine de Goldberg

Lire la vidéo

Matériel nécessaire

-Une boîte quelconque (tout dépend de ce que vous avez sous la main/ce à quoi vous voulez que votre feu ressemble)

-Des fils électriques

-Un fer à souder

-Des leds (rouge, orange, verte)

-Des résistances

-Un capteur (le code a été essayé et fonctionne avec un capteur de vibrations et un capteur de présence)

Montage

Ici avec un capteur de présence

Capture d’écran 2022-05-17 à 20.17.51.png

Code

int capteur = 7;
int LedRouge = 2;
int LedOrange = 3;
int LedVerte = 4;

 

void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
pinMode(LedRouge, OUTPUT);
pinMode(LedOrange, OUTPUT);
pinMode(LedVerte, OUTPUT);
pinMode(capteur, INPUT);


  
 
digitalWrite(LedRouge, LOW);
digitalWrite(LedOrange, LOW);
digitalWrite(LedVerte, LOW);

}

void loop() {
  // put your main code here, to run repeatedly:
if(digitalRead(capteur)==HIGH){
    Serial.println("un piéton veut traverser");
    digitalWrite(LedVerte, HIGH);
    delay(5000);
    digitalWrite(LedVerte, LOW);
    digitalWrite(LedOrange, HIGH);
    delay(2000);
    digitalWrite(LedOrange, LOW);
    digitalWrite(LedRouge, HIGH);
    delay(6000);
    digitalWrite(LedRouge, LOW);
     }

else if(digitalRead(capteur)==LOW){
    Serial.println("personne ne veut traverser");
    }
}

bottom of page