Ви не увійшли.
Ага, и затормозить это всё дело еще и UARTом )))
Чаще с одним пином, потому-что работают с лентой на аппаратном уровне, например подключают по SPI или UART, а этих интерфейсов на mega328 по одному, если делать программно, то можно хоть на все ноги ленты повесить, будет сказываться только на скорости, т.к. выброс информации в ленты будет происходить последовательно.
#define LED_DDR DDRB
#define LED_PORT PORTB
#define LED_PIN PINB
#define LED_BIT _BV(0)
#define NOP __asm__("nop\n\t")
void Ai_WS2811::sendLedData(void)
{
cli();
register byte *p = m_pData;
register byte *e = m_pDataEnd;
volatile uint8_t b;
while(p != e)
{
b = *p++; // Current byte value
byte i=8;
do {
if ((b&0x80)==0) {
// Send a '0'
if (F_CPU==16000000L) {
LED_PIN=LED_BIT;NOP;// Hi (start)
NOP;NOP; // Hi
LED_PIN=LED_BIT;NOP;// Lo (250ns)
NOP;NOP; // Lo
NOP;NOP; // Lo (500ns)
}
else if (F_CPU==8000000L) {
LED_PIN = LED_BIT; // Hi (start)
NOP; // Hi
LED_PIN = LED_BIT; // Lo (250ns)
NOP; // Lo
NOP; // Lo (500ns)
NOP; // Lo (data bit here!)
NOP; // Lo (750ns)
}
}
else {
// Send a '1'
if (F_CPU==16000000L) {
LED_PIN=LED_BIT;NOP;// Hi (start)
NOP;NOP; // Hi
NOP;NOP; // Hi (250ns)
NOP;NOP; // Hi
NOP;NOP; // Hi (500ns)
LED_PIN=LED_BIT; // Lo (625ns)
}
else if (F_CPU==8000000L) {
LED_PIN = LED_BIT; // Hi (start)
NOP; // Hi
NOP; // Hi (250ns)
NOP; // Hi
NOP; // Hi (500ns)
NOP; // Hi (data bit here!)
LED_PIN = LED_BIT; // Lo (750ns)
}
}
b = b+b;
} while (--i!=0);
}
sei();
}
Так вам единожды прочесть? присылайте карточку я прочту, зачем зря приобретать ардуину. Или как?
Считать CID вы можете любой ардуиной и шилдом. А вот записать просто так не получиться. Не все карты поддерживают перезапись и в режиме SPI эта команда не поддерживается, только SDIO.