Slumpgenerator med 6 st 12 volts lampor/dioder

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
blomman
Inlägg: 11
Blev medlem: 15 maj 2006, 03:17:54
Ort: Stockholm
Kontakt:

Slumpgenerator med 6 st 12 volts lampor/dioder

Inlägg av blomman »

Jag behöver en (enkel) krets som vid tryck på en knapp tänder en av 6 st 12V lampor . . ..
Användarvisningsbild
MNorrgren
Inlägg: 5851
Blev medlem: 27 maj 2005, 16:09:10
Ort: Sjöbo, Skåne

Inlägg av MNorrgren »

Jaha...

Kolla google?

Lite mer beskrvning kanske?
Användarvisningsbild
anlamotte
Inlägg: 859
Blev medlem: 5 augusti 2003, 15:54:34
Ort: Stockholm
Kontakt:

Inlägg av anlamotte »

Prova med en dekadräknare, t.ex 4017, som du klockar med hög hastighet via knappen.

Så länge knappen är intryckt klockas räknaren och när du släpper knappen är det omöjligt att förutse var den kommer stanna.

Som klockgenerator kan en 555'a eller någon grind användas.
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Inlägg av Micke_s »

Det går lösa med vanliga 74 kretsar, ULN2003, 7805.
Jag hade förvisso kastat in allt i en liten microprocessor.

Kod för en mega88, styrpinnarna ut är open-colector med denna kod.

Kod: Markera allt

#include <avr/io.h>
#include <util/delay.h>

/* delay units of 10 msec */
void delay10Ms(unsigned int cnt){
    if(cnt == 0) return; //failsafe
    
    while(cnt--){
        _delay_ms(10);
    }
}

//high = Button pressed
//low = No button pressed
//react on PB0, internal pullup
unsigned char isButtonPressed(void){
    if( PINB & _BV(PB0) ){
        return 0;
    }else{
        return 1;
    }
}

int main(void){
    unsigned char num;
    
    //init ports
    DDRC = 0x00; //PORTC in
    DDRB = 0x00; //PORTB in
    
    PORTC = 0x00; //all low on PORTC
    PORTB = 0xFF; //pullup on inputs pin
   
    TCCR0B = _BV(CS00); //start timer0
    
    
    //main loop
    for(;;){
        //check if button is pressed
        if( isButtonPressed() ){
            
            //this is random becouse button is pressed 
            // @ random time
            
            //get a number(0 to 5) from timer0
            num = 1<<(TCNT0 % 6); 
            
            
            //trigger sound
            DDRC |= num;    //pin output
            delay10Ms(200); //delay 2 sec
            DDRC &= ~num;   //pin input
            
            //wait until button is released
            while(isButtonPressed())continue;
        }
        
    }
}
Skriv svar