Jump to content

Knazev33

Members
  • Posts

    667
  • Joined

  • Last visited

Posts posted by Knazev33

  1. Я ту схему собирал ещё в 2006 году перед уходом в армию, она бы очень мне пригодилась бы в армии ибо

    занимался там охраной объкта напичканый различными ядерными реакторами и магильниками, страшно было зделать шаг в право и лево с пропы наряда, в опасении облучится.

    в той схеме я поставил другой преобразователь напржения на 400в, ибо тот никак неполучался,

    для уменьшения габоритов и чувствительности я поставил параллельно два счётчика СИ3БГ в стекляном корпусе

    размеры 35х6х7мм.

  2. Я только начинающий в деле с програмированием и мк поэтому проблеммы, эту идею я попробывал, получилось только вот с одним диодом, но для второго диода код

    неработает и первый диод невыключает.Пробывал с переменными работать но с ними вообще ноль реакций. :wacko:

    код который я пробывал:

    while (1)

    {

    // led1 первый диод

    while (PIND.0==1){}// SB1

    delay_us(500);

    if(PINB.0==1)

    {PORTB.0=0;}

    else

    {PORTB.0=1;}

    while (PIND.0==0){}

    delay_us(500);

    //led2 // этот кусок неработает и запарывает первый :o

    while (PIND.2==1){}// SB2

    delay_us(500);

    if(PINB.2==1)

    {PORTB.2=0;}

    else

    {PORTB.2=1;}

    while (PIND.2==0){}

    delay_us(500);

    };

    }

  3. подскажите что нужно исправить в программе для того чтоб она

    работала так:

    при нажатии SB1 загорался диод1

    при нажатии SB2 загорался диод2

    при нажатии SB3 загорался диод3

    при повторном нажатии на эти кнопки они также выключались.

    я уже много всего перепробовал но неполучается...

    сусок кода проги:

    while (1)

    {

    // ON

    if(PIND.0==1){} //SB1

    {delay_us(200);

    PORTB.0=0;} //диод1

    //

    if(PIND.1==1){} //SB2

    {delay_us(200);

    PORTB.1=0;}

    //

    if(PIND.2==1){} //SB3

    {delay_us(200);

    PORTB.2=0;}

    //

    //OFF

    if((PIND.0==1)|(PORTB.0==1)){} //SB1

    {delay_us(200);

    PORTB.0=1;}

    //

    if((PIND.1==1)|(PORTB.1==1)){} //SB2

    {delay_us(200);

    PORTB.1=1;}

    //

    if((PIND.2==1)|(PORTB.2==1)){} //SB3

    {delay_us(200);

    PORTB.2=1;}

    };

    }

  4. я написал программу которая должна при нажатии SB1

    сдвигать массив на одно положение, следующем нажатии сдвинуть на второе

    третье и т д. Но у меня получается при нажатии SB1 1раз, массив сам передвигается от

    начало до конца.

    вот код

    #include <tiny2313.h>

    #include <delay.h>

    // COLOR

    flash unsigned int tabkd1[] = {0,1,1,1,0,0,1,0,0,0,0,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,0,1,1}; // R

    flash unsigned int tabkd2[] = {1,0,1,1,0,1,1,1,0,1,0,1,0,1,0,1,0,1,1,1,1,0,1,1,1,1,1,0,1,0}; // G

    flash unsigned int tabkd3[] = {1,1,0,1,1,1,0,10,1,1,1,0,1,1,1,1,1,0,0,0,0,0,1,0,0,1,0,0,0}; // B

    void main(void)

    {

    unsigned int i; //counter

    #pragma optsize-

    CLKPR=0x80;

    CLKPR=0x00;

    #ifdef _OPTIMIZE_SIZE_

    #pragma optsize+

    #endif

    PORTA=0x00;

    DDRA=0x00;

    PORTB=0xFF;

    DDRB=0xFF;

    PORTD=0x7F;

    DDRD=0x00;

    TCCR0A=0x00;

    TCCR0B=0x00;

    TCNT0=0x00;

    OCR0A=0x00;

    OCR0B=0x00;

    TCCR1A=0x00;

    TCCR1B=0x00;

    TCNT1H=0x00;

    TCNT1L=0x00;

    ICR1H=0x00;

    ICR1L=0x00;

    OCR1AH=0x00;

    OCR1AL=0x00;

    OCR1BH=0x00;

    OCR1BL=0x00;

    GIMSK=0x00;

    MCUCR=0x00;

    TIMSK=0x00;

    USICR=0x00;

    ACSR=0x80;

    while (1)

    {

    if (PIND.1==1) {} //SB1 кнопка

    else

    {

    delay_us(200); // антидребезг

    for (i=0; i<30; i++ )

    {

    delay_ms(200); // задержка переключений

    PORTB.0=tabkd1; // r

    PORTB.2=tabkd2; // g

    PORTB.3=tabkd3; // b

    }

    }

    };

    }

×
×
  • Create New...