To make the experience fit your profile, pick a username and tell us what interests you.
We found and based on your interests.
//Will Yates - NeoPixel_Simple
#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_gpio.h"
#include "inc/hw_ints.h"
#include "inc/hw_types.h"
#include "inc/hw_memmap.h"
#include "inc/hw_ssi.h"
//#define PART_TM4C123GH6PM
#include "driverlib/pin_map.h"
#include "driverlib/qei.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"
#include "driverlib/rom.h"
#include "driverlib/ssi.h"
#include "driverlib/udma.h"
//*****************************************************************************
#define NUM_LED 6
#define LED_PORT GPIO_PORTA_BASE
#define LED_PIN GPIO_PIN_7
#define TLV2553_PORT GPIO_PORTE_BASE
#define TLV2553_CS GPIO_PIN_0
#define TLV2553_EOC GPIO_PIN_5
#define NRF24_PORT GPIO_PORTA_BASE
#define NRF24_CSN GPIO_PIN_4
#define NRF24_CE GPIO_PIN_3
#define NRF24_IRQ GPIO_PIN_2
// TLV2553 Commands
uint32_t chan_0 = 0b000000000000; // SELECT analog input channel 0
uint32_t chan_1 = 0b000100000000; // SELECT analog input channel 1
uint32_t chan_2 = 0b001000000000; // SELECT analog input channel 2
uint32_t chan_3 = 0b001100000000; // SELECT analog input channel 3
uint32_t chan_4 = 0b010000000000; // SELECT analog input channel 4
uint32_t chan_5 = 0b010100000000; // SELECT analog input channel 5
uint32_t chan_6 = 0b011000000000; // SELECT analog input channel 6
uint32_t chan_7 = 0b011100000000; // SELECT analog input channel 7
uint32_t chan_8 = 0b100000000000; // SELECT analog input channel 8
uint32_t chan_9 = 0b100100000000; // SELECT analog input channel 9
uint32_t chan_10 = 0b101000000000; // SELECT analog input channel 10
uint32_t test_1 = 0b101100000000; // SELECT TEST, Voltage = (VREF+ + VREF-)/2
uint32_t test_2 = 0b110000000000; // SELECT TEST, Voltage = REFM
uint32_t test_3 = 0b110100000000; // SELECT TEST, Voltage = REFP
uint32_t SW_PD = 0b111000000000; // SW POWERDOWN (analog + reference)
uint8_t bit_8 = 0b000001000000;
uint8_t bit_12 = 0b000000000000;
uint8_t bit_16 = 0b000011000000;
uint8_t msb = 0b000000000000;
uint8_t lsb = 0b000000100000;
uint8_t unipolar = 0b000000000000;
uint8_t bipolar = 0b000000010000;
//*****************************************************************************
//***************************************************************************//
//These two functions translate the 24bits for each LED to something that //
//the WS2812b LEDs can understand. The datasheet is useless // // ________ //
// |_____ '1' is a 800ns pulse then low (can be high forever) //
// //
// |________ '0' is a 400ns pulse (only key pulse lengt ) //
// the only thing that really matters is that the high pulses dont overlap //
//***************************************************************************//
void Pixel_High() // function for sending a high pulse
{
GPIOPinWrite(LED_PORT, LED_PIN, LED_PIN);
SysCtlDelay(3); //this needs to be the equv of 800ns (ish)
GPIOPinWrite(LED_PORT, LED_PIN, 0x00);
SysCtlDelay(3); //length of this doesn't really matter
}
void Pixel_Low() // function for sending the low pulse
{ // switching the pin on and off takes the proper amount of time
GPIOPinWrite(LED_PORT, LED_PIN, LED_PIN);
GPIOPinWrite(LED_PORT, LED_PIN, 0x00);
SysCtlDelay(4); //length of this doesnt really matter
}
void clear_Ring()
{
//write the same value to all the LEDs
int clear;
int count;
for(clear = 0; clear<NUM_LED; clear++){
//Green
for (count = 0; count < 8; count++){
Pixel_Low();
}
//Red
for (count = 0; count < 8; count++){
Pixel_Low();
}
//Blue
for (count = 0; count < 8; count++){
Pixel_Low();
}
}
}
void config_LED()
{
//Enable GPIO port
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); // SYSCTL_PERIPH_GPIOF * blinky *
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOA)) // SYSCTL_PERIPH_GPIOF * blinky *
{
}
GPIOPinTypeGPIOOutput(LED_PORT, LED_PIN);
//reset pixels
GPIOPinWrite(LED_PORT, LED_PIN, 0x00);
clear_Ring();
SysCtlDelay(10000);
}
//*****************************************************************************
//***************************************************************************//...
Read more »
#include <SPI.h>
#include "Arduino.h"
const int dataReadyPin = PA_5;
const int chipSelectPin = PE_0;
// TLV2553 Commands
uint16_t chan_0 = 0b000000000000; // SELECT analog input channel 0
uint16_t chan_1 = 0b000100000000; // SELECT analog input channel 1
uint16_t chan_2 = 0b001000000000; // SELECT analog input channel 2
uint16_t chan_3 = 0b001100000000; // SELECT analog input channel 3
uint16_t chan_4 = 0b010000000000; // SELECT analog input channel 4
uint16_t chan_5 = 0b010100000000; // SELECT analog input channel 5
uint16_t chan_6 = 0b011000000000; // SELECT analog input channel 6
uint16_t chan_7 = 0b011100000000; // SELECT analog input channel 7
uint16_t chan_8 = 0b100000000000; // SELECT analog input channel 8
uint16_t chan_9 = 0b100100000000; // SELECT analog input channel 9
uint16_t chan_10 = 0b101000000000; // SELECT analog input channel 10
uint16_t test_1 = 0b101100000000; // SELECT TEST, Voltage = (VREF+ + VREF-)/2
uint16_t test_2 = 0b110000000000; // SELECT TEST, Voltage = REFM
uint16_t test_3 = 0b110100000000; // SELECT TEST, Voltage = REFP
uint16_t SW_PD = 0b111000000000; // SW POWERDOWN (analog + reference)
uint16_t bit_8 = 0b000001000000; // Configuration bits[3:2] {01: 8-bit output,
uint16_t bit_12 = 0b000000000000; // 00: 12-bit output,
uint16_t bit_16 = 0b000011000000; // 10: 12-bit output,
// 11: 16:bit output}
uint16_t msb = 0b000000000000; // Configuration bits[1] {0: MSB out first,
uint16_t lsb = 0b000000100000; // 1: LSB out first}
uint16_t unipolar = 0b000000000000; // Configuration bits[0] {0: Unipolar binary,
uint16_t bipolar = 0b000000010000; // 1: Bipolar 2's complement}
uint16_t val_null, val0, val1, val2, val3, val4, val5;
SPIClass TLV2553(2);
void setup()
{
Serial.begin(9600);
TLV2553.begin();
//TLV2553.setDataMode(0);
//TLV2553.setClockDivider(128);
// initialize the data ready and chip select pins:
pinMode(dataReadyPin, INPUT);
pinMode(chipSelectPin, OUTPUT);
digitalWrite(chipSelectPin, HIGH);
}
void loop()
{
while (!digitalRead(dataReadyPin))
{
}
digitalWrite(chipSelectPin, LOW);
val_null = TLV2553.transfer((chan_0 | bit_12 | msb | unipolar) >> 4);
while (digitalRead(dataReadyPin)){
val_null = (val_null << 4);
val_null += TLV2553.transfer(0xF) >> 4;
}
digitalWrite(chipSelectPin, HIGH);
while (!digitalRead(dataReadyPin))
{
}
digitalWrite(chipSelectPin, LOW);
val0 = TLV2553.transfer((chan_1 | bit_12 | msb | unipolar) >> 4);
while (digitalRead(dataReadyPin)){
val0 = (val0 << 4);
val0 += TLV2553.transfer(0xF) >> 4;
}
Serial.print("A0: ");
Serial.println(val0);
digitalWrite(chipSelectPin, HIGH);
while (!digitalRead(dataReadyPin))
{
}
digitalWrite(chipSelectPin, LOW);
val1 = TLV2553.transfer((chan_2 | bit_12 | msb | unipolar) >> 4);
while (digitalRead(dataReadyPin)){
val1 = (val1 << 4);
val1 += TLV2553.transfer(0xF) >> 4;
}
Serial.print("A1: ");
Serial.println(val1);
digitalWrite(chipSelectPin, HIGH);
while (!digitalRead(dataReadyPin))
{
}
digitalWrite(chipSelectPin, LOW);
val2 = TLV2553.transfer((chan_3 | bit_12 | msb | unipolar) >> 4);
while (digitalRead(dataReadyPin)){
val2 = (val2 << 4);
val2 += TLV2553.transfer(0xF) >> 4;
}
Serial.print("A2: ");
Serial.println(val2);
digitalWrite(chipSelectPin, HIGH);
while (!digitalRead(dataReadyPin))
{
}
digitalWrite(chipSelectPin, LOW);
val3 = TLV2553.transfer((chan_4 | bit_12 | msb | unipolar) >> 4);
while (digitalRead(dataReadyPin)){
val3 = (val3 << 4);
val3 += TLV2553.transfer(0xF) >> 4;
}
Serial.print("A3: ");
Serial.println(val3);
digitalWrite(chipSelectPin, HIGH);
while (!digitalRead(dataReadyPin))
{
}
digitalWrite(chipSelectPin, LOW);
val4 = TLV2553.transfer((chan_5 | bit_12 | msb | unipolar) >> 4);
while (digitalRead(dataReadyPin)){
val4 = (val4 << 4);
val4 += TLV2553.transfer(0xF) >> 4;
}
Serial.print("A4: ");
Serial.println(val4);
digitalWrite(chipSelectPin, HIGH);
while (!digitalRead(dataReadyPin))
{
}
digitalWrite(chipSelectPin, LOW);
val5...
Read more »
Create an account to leave a comment. Already have an account? Log In.
Become a member to follow this project and never miss any updates
By using our website and services, you expressly agree to the placement of our performance, functionality, and advertising cookies. Learn More