Sida 1 av 1

Slumpgenerator med 6 st 12 volts lampor/dioder

Postat: 15 juni 2007, 03:39:29
av blomman
Jag behöver en (enkel) krets som vid tryck på en knapp tänder en av 6 st 12V lampor . . ..

Postat: 15 juni 2007, 07:18:00
av MNorrgren
Jaha...

Kolla google?

Lite mer beskrvning kanske?

Postat: 15 juni 2007, 10:11:17
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.

Postat: 15 juni 2007, 10:17:56
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;
        }
        
    }
}