i had gotten a tricolored led strip from radioshack and wanted to know if i could get rid of the bottom part of the code
this is the entire code
#include <avr/pgmspace.h>
#define DATA_1 (PORTC |= 0X01) // DATA 1 // for UNO
#define DATA_0 (PORTC &= 0XFE) // DATA 0 // for UNO
#define STRIP_PINOUT (DDRC=0xFF) // for UNO
PROGMEM const unsigned long pattern_test_rainbow[10][10]={
// ***********************************************************************************************************
// *
// * Power Up Init.
// *
// *
// ***********************************************************************************************************
void setup() {
STRIP_PINOUT; // set output pin - DEBUG: should auto detect which mother board for use
reset_strip();
//noInterrupts();
}
// ***********************************************************************************************************
// *
// * Main Loop
// *
// *
// ***********************************************************************************************************
void loop()
{
send_1M_pattern(pattern_test_red, 10, 500);
delay(500);
send_1M_pattern(pattern_test_blue, 10, 500);
delay(500);
send_1M_pattern(pattern_test_green, 10, 500);
delay(500);
send_1M_pattern(pattern_test_white, 10, 500);
delay(500);
send_1M_pattern(pattern_test_comet1, 10, 70);
delay(500);
send_1M_pattern(pattern_test_comet2, 10, 70);
delay(500);
send_1M_pattern(pattern_test_comet3, 10, 70);
delay(500);
while (1)
{
send_1M_pattern(pattern_test_rainbow, 10, 70);
}
/*
frame++;
if(frame<=10) LEDSTRIP_PATTERN_0();
if(10<frame<=20) LEDSTRIP_PATTERN_0();
if(20<frame<=30) LEDSTRIP_PATTERN_0();
if(frame>30) frame=1;
*/
//delay(1);
}
/*******************************************************************************
* Function Name : send_1M_pattern
* Description : Transmit pattern to whole 1 meter strip
*
* Input : pointer to ROM pattern; pattern length; frame rate
*
* Output : None
* Return : None
*******************************************************************************/
void send_1M_pattern(const unsigned long data[][10], int pattern_no, int frame_rate)
{
int i=0;
int j=0;
uint32_t temp_data;
for (i=0;i<pattern_no;i++)
{
noInterrupts();
for (j=0;j<10;j++)
{
temp_data=pgm_read_dword_near(&data[i][j]);
send_strip(temp_data);
}
interrupts();
delay(frame_rate);
}
}
/*******************************************************************************
* Function Name : send_strip
* Description : Transmit 24 pulse to LED strip
*
* Input : 24-bit data for the strip
*
* Output : None
* Return : None
*******************************************************************************/
void send_strip(uint32_t data)
{
int i;
unsigned long j=0x800000;
for (i=0;i<24;i++)
{
if (data & j)
{
DATA_1;
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
/*----------------------------*/
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
/*----------------------------*/
DATA_0;
}
else
{
DATA_1;
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
DATA_0;
/*----------------------------*/
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
/*----------------------------*/
}
j>>=1;
}
}
/*******************************************************************************
* Function Name : reset_strip
* Description : Send reset pulse to reset all color of the strip
*
* Input : None
*
* Output : None
* Return : None
*******************************************************************************/
void reset_strip()
{
DATA_0;
delayMicroseconds(20);
}
and this is the bottom part of the code that i want to know if it’s important to code and if i could change or get rid of
while (1)
{
send_1M_pattern(pattern_test_rainbow, 10, 70);
}
/*
frame++;
if(frame<=10) LEDSTRIP_PATTERN_0();
if(10<frame<=20) LEDSTRIP_PATTERN_0();
if(20<frame<=30) LEDSTRIP_PATTERN_0();
if(frame>30) frame=1;
*/
//delay(1);
}
/*******************************************************************************
* Function Name : send_1M_pattern
* Description : Transmit pattern to whole 1 meter strip
*
* Input : pointer to ROM pattern; pattern length; frame rate
*
* Output : None
* Return : None
*******************************************************************************/
void send_1M_pattern(const unsigned long data[][10], int pattern_no, int frame_rate)
{
int i=0;
int j=0;
uint32_t temp_data;
for (i=0;i<pattern_no;i++)
{
noInterrupts();
for (j=0;j<10;j++)
{
temp_data=pgm_read_dword_near(&data[i][j]);
send_strip(temp_data);
}
interrupts();
delay(frame_rate);
}
}
/*******************************************************************************
* Function Name : send_strip
* Description : Transmit 24 pulse to LED strip
*
* Input : 24-bit data for the strip
*
* Output : None
* Return : None
*******************************************************************************/
void send_strip(uint32_t data)
{
int i;
unsigned long j=0x800000;
for (i=0;i<24;i++)
{
if (data & j)
{
DATA_1;
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
/*----------------------------*/
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
/*----------------------------*/
DATA_0;
}
else
{
DATA_1;
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
DATA_0;
/*----------------------------*/
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
/*----------------------------*/
}
j>>=1;
}
}
/*******************************************************************************
* Function Name : reset_strip
* Description : Send reset pulse to reset all color of the strip
*
* Input : None
*
* Output : None
* Return : None
*******************************************************************************/
void reset_strip()
{
DATA_0;
delayMicroseconds(20);
}
p.s. there were light test but i deleted them because i was over the max amount of characters