RGB LED (красный, эеленый, голубой диод) на Атмел Студио

Hanna
Offline
Зарегистрирован: 04.11.2016

Кто подскажет. как подключить диод к 4 кнопкам.1 желтый, 2 = зеленый, 3 красный, 4 кнопка=мигающая белая лампочка

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

три кнопки к светодиоду, четвёртую к лампочке

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Такое ощущение, что ТС уже третий раз заводит эту тему. Может объясните толком что это, зачем и тогда хоть чуток понятнее станет?

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

ЕвгенийП пишет:

Такое ощущение, что ТС уже третий раз заводит эту тему. Может объясните толком что это, зачем и тогда хоть чуток понятнее станет?

предлагаю сбросить его в пропасть как результат отрицательной столетней селекции кретинов 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Даму в пропасть? У Вас дурной вкус, сударь.

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

ЕвгенийП пишет:

Даму в пропасть? У Вас дурной вкус, сударь.

дама от пидораса с женским ником отличается тем, что не шарится по техническим форумам

Hanna
Offline
Зарегистрирован: 04.11.2016

а я думала это форум по программированию.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Нет, это форум по пинанию новичков...

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Hanna пишет:

а я думала это форум по программированию.

Ну это форум по программированию, а вы спрашивали как подключить. Значит вам на форум электриков надо.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Hanna пишет:

а я думала это форум по программированию.

Да, неужели? Может Вы думали, что это форум фокусников-иллюзионистов? :))))

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

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

Hanna пишет:

а я думала это форум по программированию.

ты не поверишь - я тоже так думала

Hanna
Offline
Зарегистрирован: 04.11.2016

подключить через код. 

Hanna
Offline
Зарегистрирован: 04.11.2016

пытаюсь пройти азы интегрирования, т к мой код не срабатывает

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
 
#define Switch_0_Pressed 0b00000001
#define Switch_1_Pressed 0b00000010
#define Switch_2_Pressed 0b00000100
#define Switch_3_Pressed 0b00001000
/*#define Switch_4_Pressed 0b00010000
#define Switch_5_Pressed 0b00100000
#define Switch_6_Pressed 0b01000000
#define Switch_7_Pressed 0b10000000
*/
void InitialiseGeneral();
void InitialiseTimer5_PWM_ChannelA();
 
int main( void )
{
unsigned char SwitchesValue;
InitialiseTimer5_PWM_ChannelA();
InitialiseGeneral(); // Port B must be set for output AFTER the timer setup of OC0
 
    while(1)
    {
SwitchesValue = ~PIND; // Read value on switches
 
// Set the timer count register depending on which switch was pressed
// (i.e. set the PWM pulse width, and thus adjust the LED brightness)
switch(SwitchesValue)
{
 
case Switch_0_Pressed: // Switch 0 pressed
if((1<<PD0) == 1) //If switch is pressed
{
PORTB |= (1<<PB0); //Turns ON LED
_delay_ms(3000); //3 second delay
PORTB &= ~(1<<PB0); //Turns OFF LED
}
 
// _delay_ms(80); // Switch debounce delay
break;
case Switch_1_Pressed: // Switch 1 pressed
if((1<<PD1) == 1) //If switch is pressed
{
PORTB |= (1<<PB1); //Turns ON LED
_delay_ms(3000); //3 second delay
PORTB &= ~(1<<PB1); //Turns OFF LED
}
 
//_delay_ms(80); // Switch debounce delay
break;
case Switch_2_Pressed: // Switch 2 pressed
if((1<<PD2) == 1) //If switch is pressed
{
PORTB |= (1<<PB2); //Turns ON LED
_delay_ms(3000); //3 second delay
PORTB &= ~(1<<PB2); //Turns OFF LED
}
//_delay_ms(80); // Switch debounce delay
break;
 
 
case Switch_3_Pressed: // Switch 3 pressed
//if(OCR5B==1)
 
//OCR5B=0b00000111;
if((1<<PD3) == 1) //If switch is pressed
{
PORTB |= (1<<PB3); //Turns ON LED
_delay_ms(3000); //3 second delay
PORTB &= ~(1<<PB3); //Turns OFF LED
}
 
//_delay_ms(80); // Switch debounce delay
break;
 
/*case Switch_4_Pressed: // Switch 4 pressed
OCR5AL = 24; // 9.3% duty cycle
break;
case Switch_5_Pressed: // Switch 5 pressed
OCR5AL = 32; // 12.5% duty cycle 
break;
case Switch_6_Pressed: // Switch 6 pressed
OCR5AL = 64; // 25% duty cycle
break;
case Switch_7_Pressed: // Switch 7 pressed
OCR5AL = 96; // 37.5% duty cycle (LEDS appear near-full brightness)
break;
*/
}
}
}
 
void InitialiseGeneral()
{
DDRB = 0x07; // Set Port B as output (LEDs)
PORTB = 0x00; // LEDs off initially
DDRD = 0x00; // Set Port D as input (On-board switches to control pulse width)
 
sei(); // Enable interrupts at global level set Global Interrupt Enable (I) bit
}
 
void InitialiseTimer5_PWM_ChannelA()
{
// TCCR5A – Timer/Counter 5 Control Register A
// Bit 7:6 – COMnA1:0: Compare Output Mode for Channel A
// Bit 5:4 – COMnB1:0: Compare Output Mode for Channel B
// Bit 3:2 – COMnC1:0: Compare Output Mode for Channel C
// Bit 1:0 – WGMn1:0: Waveform Generation Mode (0101 Fast PWM, 8-bit)
TCCR5A = 0b00000001; // No output pins in use, set all to normal mode, waveform  = Fast PWM, 8-bit
 
// TCCR5B – Timer/Counter 5 Control Register B
// Bit 7 – ICNCn: Input Capture Noise Canceler
// Bit 6 – ICESn: Input Capture Edge Select
// Bit 5 – Reserved Bit
// Bit 4:3 – WGMn3:2: Waveform Generation Mode (0101 Fast PWM, 8-bit)
// Bit 2:0 – CSn2:0: Clock Select (010 = 8 prescaler)
TCCR5B = 0b00001010; // waveform  = Fast PWM, 8-bit, 8 prescaler
 
// TCCR5C – Timer/Counter 5 Control Register C
// Bit 7 – FOCnA: Force Output Compare for Channel A
// Bit 6 – FOCnB: Force Output Compare for Channel B
// Bit 5 – FOCnC: Force Output Compare for Channel C
TCCR5C = 0b00000000;
 
// TCNT5H and TCNT5L –Timer/Counter 5
TCNT5H = 0;
TCNT5L = 0;
 
// OCR5AH and OCR5AL – Output Compare Register 5 A
OCR5AH = 0;
OCR5AL = 24;
 
// TIMSK5 – Timer/Counter 5 Interrupt Mask Register
// Bit 5 – ICIEn: Timer/Countern, Input Capture Interrupt Enable
// Bit 3 – OCIEnC: Timer/Countern, Output Compare C Match Interrupt Enable
// Bit 2 – OCIEnB: Timer/Countern, Output Compare B Match Interrupt Enable
// Bit 1 – OCIEnA: Timer/Countern, Output Compare A Match Interrupt Enable
// Bit 0 – TOIEn: Timer/Countern, Overflow Interrupt Enable
TIMSK5 = 0b00000011; // Enable OCIE5A and TOIE5 interrupts
 
// TIFR5 – Timer/Counter5 Interrupt Flag Register
TIFR5 = 0b00101111; // Clear all flags
}
 
ISR(TIMER5_OVF_vect) // TIMER5_Overflow_Handler
{ // Here at Start of new cycle
PORTB = 0x00; //LEDS on
}
 
ISR(TIMER5_COMPA_vect) // TIMER5_CompareA_Handler
{ // Here when reach the cutoff for the high part of the cycle
PORTB = 0xFF; //LEDS off
}
qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

А обязательно вам на Атмел Студио. Может поближе к людям в среде Ардуино?

http://arduino-project.net/podklyuchenie-rgb-lenty-arduino/

http://radioparty.ru/prog-avr/program-c/293-rgb-lesson

https://avrlab.com/node/93

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

qwone пишет:

А обязательно вам на Атмел Студио. Может поближе к людям в среде Ардуино?

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

__Alexander
Offline
Зарегистрирован: 24.10.2012

На CV больше похоже.