Arnov Sharma
Published © MIT

R2D2 Mini Edition

Made a miniature R2D2 from PCB, it's powered by an Attiny85 and speaks ASTROMECH Phrases at 3-second intervals through a BUZZER.

BeginnerFull instructions provided1 hour482

Things used in this project

Story

Read more

Custom parts and enclosures

Gerber data for PCB

Schematics

sch

Code

code

C/C++
/*************************************************** <br>  Project R2D2 Sound Generator
  
  To all fans of StarWars and Arduino!</p><p>  Written by Marcelo Larios
  
  BSD license, all text above must be included in any redistribution
****************************************************/

#define speakerPin 0
#define ledPin 2

void setup() {
    
    pinMode(speakerPin, OUTPUT);
    pinMode(ledPin, OUTPUT);
    randomSeed(analogRead(0));
}

void phrase1() {
    
    int k = random(1000,2000);
    digitalWrite(ledPin, HIGH);
    for (int i = 0; i <=  random(100,2000); i++){
        
        tone(speakerPin, k+(-i*2));          
        delay(random(.9,2));             
    } 
    digitalWrite(ledPin, LOW);   
    for (int i = 0; i <= random(100,1000); i++){
        
        tone(speakerPin, k + (i * 10));          
        delay(random(.9,2));             
    } 
}
void phrase2() {
    
    int k = random(1000,2000);
    digitalWrite(ledPin, HIGH);  
    for (int i = 0; i <= random(100,2000); i++){
        
        tone(speakerPin, k+(i*2));          
        delay(random(.9,2));             
    } 
    digitalWrite(ledPin, LOW);   
    for (int i = 0; i <= random(100,1000); i++){
        
        tone(speakerPin, k + (-i * 10));          
        delay(random(.9,2));             
    } 
}

void loop() {
    
    int K = 2000;
    switch (random(1,7)) {
        
        case 1:phrase1(); break;
        case 2:phrase2(); break;
        case 3:phrase1(); phrase2(); break;
        case 4:phrase1(); phrase2(); phrase1();break;
        case 5:phrase1(); phrase2(); phrase1(); phrase2(); phrase1();break;
        case 6:phrase2(); phrase1(); phrase2(); break;
    }
    for (int i = 0; i <= random(3, 9); i++){
        
        digitalWrite(ledPin, HIGH);  
        tone(speakerPin, K + random(-1700, 2000));          
        delay(random(70, 170));  
        digitalWrite(ledPin, LOW);           
        noTone(speakerPin);         
        delay(random(0, 30));             
    } 
    noTone(speakerPin);         
    delay(random(2000, 4000));     //(1000, 2000)        
}

Credits

Arnov Sharma
338 projects • 344 followers
Just your average MAKER
Contact

Comments

Please log in or sign up to comment.