Revert "new node and FastLED"
This reverts commit 4730087f9e0407dac3795dfea3b10a3f22bc8b54.
This commit is contained in:
parent
f4ac188a96
commit
c7e9d40c91
194
src/CANNode.cpp
194
src/CANNode.cpp
@ -10,12 +10,11 @@
|
|||||||
#include <Metro.h>
|
#include <Metro.h>
|
||||||
#include <FlexCAN.h>
|
#include <FlexCAN.h>
|
||||||
#include <OneWire.h>
|
#include <OneWire.h>
|
||||||
#include <FastLED.h>
|
|
||||||
#include "CANNode.h"
|
#include "CANNode.h"
|
||||||
|
|
||||||
// For Node definition:
|
// For Node definition:
|
||||||
|
|
||||||
#include "Node_2_def.h"
|
#include "Node_3_def.h"
|
||||||
|
|
||||||
// Metro ticks in ms
|
// Metro ticks in ms
|
||||||
#define METRO_CAN_tick 1
|
#define METRO_CAN_tick 1
|
||||||
@ -53,12 +52,9 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
uint8_t led = ONBOARD_LED;
|
uint8_t led = LED;
|
||||||
uint8_t state;
|
uint8_t state;
|
||||||
uint8_t pin_state;
|
uint8_t pin_state;
|
||||||
uint8_t led_current_value;
|
|
||||||
uint8_t led_last_value;
|
|
||||||
int serial_in;
|
|
||||||
bool action[2];
|
bool action[2];
|
||||||
// Metro
|
// Metro
|
||||||
Metro METRO_CAN = Metro(METRO_CAN_tick);
|
Metro METRO_CAN = Metro(METRO_CAN_tick);
|
||||||
@ -75,8 +71,6 @@ OneWire OW_1(OW_pin);
|
|||||||
|
|
||||||
telegram_comp_t mesg_comp;
|
telegram_comp_t mesg_comp;
|
||||||
|
|
||||||
// event info = { 1, 0x03, 0x01, OFF, 0x01};
|
|
||||||
|
|
||||||
static CAN_message_t txmsg,rxmsg;
|
static CAN_message_t txmsg,rxmsg;
|
||||||
static uint8_t hex[17] = "0123456789abcdef";
|
static uint8_t hex[17] = "0123456789abcdef";
|
||||||
|
|
||||||
@ -84,9 +78,6 @@ int txCount,rxCount;
|
|||||||
unsigned int txTimer,rxTimer;
|
unsigned int txTimer,rxTimer;
|
||||||
|
|
||||||
|
|
||||||
CRGB leds[NUM_LEDS];
|
|
||||||
|
|
||||||
|
|
||||||
// Functions ------------------------------^-------------------------
|
// Functions ------------------------------^-------------------------
|
||||||
void PrintBytes(uint8_t* addr, uint8_t count, bool newline=0) {
|
void PrintBytes(uint8_t* addr, uint8_t count, bool newline=0) {
|
||||||
for (uint8_t i = 0; i < count; i++) {
|
for (uint8_t i = 0; i < count; i++) {
|
||||||
@ -133,7 +124,7 @@ uint8_t toggle_Pin(uint8_t pin){
|
|||||||
}
|
}
|
||||||
|
|
||||||
uint32_t forgeid(event_t event){
|
uint32_t forgeid(event_t event){
|
||||||
return (event.prio<<26)+(event.dst<<18)+(NODE_ID<<8)+event.cmd;
|
return (event.prio<<26)+(event.dst<<16)+(NODE_ID<<8)+event.cmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
telegram_comp_t parse_CAN(CAN_message_t mesg){
|
telegram_comp_t parse_CAN(CAN_message_t mesg){
|
||||||
@ -165,94 +156,35 @@ void send_event (uint8_t trig_event){
|
|||||||
txmsg.len = 0;
|
txmsg.len = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void switch_leds (uint8_t value) {
|
|
||||||
led_last_value = led_current_value;
|
|
||||||
// FastLED.setTemperature( TEMP );
|
|
||||||
// FastLED.setBrightness( BRIGHTNESS );
|
|
||||||
memset8( leds, value, NUM_LEDS * sizeof(CRGB));
|
|
||||||
led_current_value = value;
|
|
||||||
FastLED.show();
|
|
||||||
}
|
|
||||||
void toggle_leds ( void ) {
|
|
||||||
if ( led_current_value != 0) {
|
|
||||||
switch_leds(0);
|
|
||||||
} else {
|
|
||||||
if ( led_current_value == led_last_value){
|
|
||||||
switch_leds(255);
|
|
||||||
} else {
|
|
||||||
switch_leds(led_last_value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void take_action (action_type type, uint8_t tag ){
|
void take_action (action_type type, uint8_t tag ){
|
||||||
for (uint8_t i = 0; action_map[i].tag != 0 ; i++) {
|
for (uint8_t i = 0; action_map[i].tag != 0 ; i++) {
|
||||||
if ( action_map[i].tag == tag ) {
|
if ( action_map[i].tag == tag ) {
|
||||||
switch ( type ) {
|
switch ( type ) {
|
||||||
case OFF:
|
case OFF:
|
||||||
switch ( outputs[action_map[i].outputs_idx].type ){
|
digitalWrite(outputs[action_map[i].outputs_idx].address,LOW ^ outputs[action_map[i].outputs_idx].invert);
|
||||||
case GPIO:
|
|
||||||
digitalWrite(outputs[action_map[i].outputs_idx].address,LOW ^ outputs[action_map[i].outputs_idx].invert);
|
|
||||||
break;
|
|
||||||
case LED:
|
|
||||||
switch_leds(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
Serial.print(F("Switching OFF Output: "));
|
Serial.print(F("Switching OFF Output: "));
|
||||||
Serial.println(action_map[i].outputs_idx);
|
Serial.println(action_map[i].outputs_idx);
|
||||||
break;
|
break;
|
||||||
case ON:
|
case ON:
|
||||||
switch ( outputs[action_map[i].outputs_idx].type ){
|
|
||||||
case GPIO:
|
|
||||||
digitalWrite(outputs[action_map[i].outputs_idx].address,HIGH ^ outputs[action_map[i].outputs_idx].invert);
|
|
||||||
break;
|
|
||||||
case LED:
|
|
||||||
switch_leds(255);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
digitalWrite(outputs[action_map[i].outputs_idx].address, HIGH ^ outputs[action_map[i].outputs_idx].invert);
|
digitalWrite(outputs[action_map[i].outputs_idx].address, HIGH ^ outputs[action_map[i].outputs_idx].invert);
|
||||||
Serial.print(F("Switching ON Output: "));
|
Serial.print(F("Switching ON Output: "));
|
||||||
Serial.println(action_map[i].outputs_idx);
|
Serial.println(action_map[i].outputs_idx);
|
||||||
break;
|
break;
|
||||||
case TOGGLE:
|
case TOGGLE:
|
||||||
|
pin_state = toggle_Pin(outputs[action_map[i].outputs_idx].address);
|
||||||
Serial.print(F("Toggeling Output: "));
|
Serial.print(F("Toggeling Output: "));
|
||||||
Serial.print(action_map[i].outputs_idx);
|
Serial.print(action_map[i].outputs_idx);
|
||||||
Serial.print(F(" to new state: "));
|
Serial.print(F(" to new state: "));
|
||||||
switch ( outputs[action_map[i].outputs_idx].type ){
|
Serial.println(pin_state ^ outputs[action_map[i].outputs_idx].invert);
|
||||||
case GPIO:
|
|
||||||
pin_state = toggle_Pin(outputs[action_map[i].outputs_idx].address);
|
|
||||||
Serial.println(pin_state ^ outputs[action_map[i].outputs_idx].invert);
|
|
||||||
break;
|
|
||||||
case LED:
|
|
||||||
toggle_leds();
|
|
||||||
Serial.println(led_current_value);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case VALUE:
|
case VALUE:
|
||||||
switch ( outputs[action_map[i].outputs_idx].type ){
|
Serial.println(F("TBD"));
|
||||||
case GPIO:
|
|
||||||
if (VALUE == 0) {
|
|
||||||
digitalWrite(outputs[action_map[i].outputs_idx].address,LOW ^ outputs[action_map[i].outputs_idx].invert);
|
|
||||||
} else {
|
|
||||||
digitalWrite(outputs[action_map[i].outputs_idx].address, HIGH ^ outputs[action_map[i].outputs_idx].invert);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case LED:
|
|
||||||
switch_leds(VALUE);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
Serial.print(F("Setting Output: "));
|
|
||||||
Serial.print(action_map[i].outputs_idx);
|
|
||||||
Serial.print(F(" to value: "));
|
|
||||||
Serial.println(VALUE);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// -------------------------------------------------------------
|
// -------------------------------------------------------------
|
||||||
void setup(void)
|
void setup(void)
|
||||||
{
|
{
|
||||||
@ -268,11 +200,6 @@ void setup(void)
|
|||||||
CANbus.begin();
|
CANbus.begin();
|
||||||
txmsg.ext = 1;
|
txmsg.ext = 1;
|
||||||
txmsg.timeout = 100;
|
txmsg.timeout = 100;
|
||||||
// FastLED
|
|
||||||
//delay(3000); // sanity delay
|
|
||||||
FastLED.addLeds<CHIPSET, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
|
|
||||||
FastLED.setBrightness( BRIGHTNESS );
|
|
||||||
FastLED.setTemperature( TEMP );
|
|
||||||
|
|
||||||
// outputs
|
// outputs
|
||||||
for (size_t i = 0; outputs[i].type != NOP; i++) {
|
for (size_t i = 0; outputs[i].type != NOP; i++) {
|
||||||
@ -394,71 +321,52 @@ void loop(void)
|
|||||||
--rxTimer;
|
--rxTimer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while ( CANbus.read(rxmsg) ) {
|
while ( CANbus.read(rxmsg) ) {
|
||||||
//hexDump( sizeof(rxmsg), (uint8_t *)&rxmsg );
|
//hexDump( sizeof(rxmsg), (uint8_t *)&rxmsg );
|
||||||
DEBUG_WRITE(rxmsg.buf[0]);
|
DEBUG_WRITE(rxmsg.buf[0]);
|
||||||
rxCount++;
|
rxCount++;
|
||||||
Serial.print("GOT=");
|
Serial.print("GOT=");
|
||||||
Serial.print(rxmsg.id,HEX);
|
Serial.print(rxmsg.id,HEX);
|
||||||
for (uint8_t i=0; i<rxmsg.len; i++){
|
for (uint8_t i=0; i<rxmsg.len; i++){
|
||||||
Serial.print(":");
|
Serial.print(":");
|
||||||
Serial.print(rxmsg.buf[i],HEX);
|
Serial.print(rxmsg.buf[i],HEX);
|
||||||
}
|
}
|
||||||
Serial.println();
|
Serial.println();
|
||||||
mesg_comp= parse_CAN(rxmsg);
|
mesg_comp= parse_CAN(rxmsg);
|
||||||
if (mesg_comp.dst == 0xFF || mesg_comp.dst == NODE_ID ) {
|
if (mesg_comp.dst == 0xFF || mesg_comp.dst == NODE_ID ) {
|
||||||
|
|
||||||
switch (mesg_comp.cmd) {
|
switch (mesg_comp.cmd) {
|
||||||
// OFF
|
// OFF
|
||||||
case 0x00 :
|
case 0x00 :
|
||||||
take_action(OFF, mesg_comp.buf[0]);
|
take_action(OFF, mesg_comp.buf[0]);
|
||||||
break;
|
break;
|
||||||
// ON
|
// ON
|
||||||
case 0x01 :
|
case 0x01 :
|
||||||
take_action(ON, mesg_comp.buf[0]);
|
take_action(ON, mesg_comp.buf[0]);
|
||||||
break;
|
break;
|
||||||
// VALUE
|
// VALUE
|
||||||
case 0x02 :
|
case 0x02 :
|
||||||
break;
|
break;
|
||||||
// TOGGLE
|
// TOGGLE
|
||||||
case 0x03:
|
case 0x03:
|
||||||
take_action(TOGGLE, mesg_comp.buf[0]);
|
take_action(TOGGLE, mesg_comp.buf[0]);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
rxCount = 0;
|
||||||
}
|
}
|
||||||
rxCount = 0;
|
txTimer = 100;//milliseconds
|
||||||
}
|
if (txmsg.len != 0){
|
||||||
txTimer = 100;//milliseconds
|
Serial.print("PUT=");
|
||||||
if (txmsg.len != 0){
|
Serial.print(txmsg.id,HEX);
|
||||||
Serial.print("PUT=");
|
for (uint8_t i=0; i<txmsg.len; i++){
|
||||||
Serial.print(txmsg.id,HEX);
|
Serial.print(":");
|
||||||
for (uint8_t i=0; i<txmsg.len; i++){
|
Serial.print(txmsg.buf[i],HEX);
|
||||||
Serial.print(":");
|
}
|
||||||
Serial.print(txmsg.buf[i],HEX);
|
Serial.print("\n");
|
||||||
}
|
CANbus.write(txmsg);
|
||||||
Serial.print("\n");
|
txmsg.buf[0]++;
|
||||||
CANbus.write(txmsg);
|
txmsg.len = 0;
|
||||||
txmsg.buf[0]++;
|
|
||||||
txmsg.len = 0;
|
|
||||||
}
|
|
||||||
if (Serial.available() > 0) {
|
|
||||||
// read the incoming byte:
|
|
||||||
serial_in = Serial.read();
|
|
||||||
switch (serial_in) {
|
|
||||||
case 0x31 : take_action(TOGGLE, 1); break;
|
|
||||||
case 0x32 : take_action(TOGGLE, 2); break;
|
|
||||||
case 0x33 : take_action(TOGGLE, 3); break;
|
|
||||||
case 0x34 : take_action(TOGGLE, 4); break;
|
|
||||||
case 0x35 : take_action(TOGGLE, 5); break;
|
|
||||||
case 0x36 : take_action(TOGGLE, 6); break;
|
|
||||||
case 0x37 : take_action(TOGGLE, 7); break;
|
|
||||||
case 0x38 : take_action(TOGGLE, 8); break;
|
|
||||||
case 0x39 : take_action(TOGGLE, 10); break;
|
|
||||||
// case 0x38 : digitalWrite(13, 1); break;
|
|
||||||
// case 0x39 : digitalWrite(13, 0); break;
|
|
||||||
}
|
}
|
||||||
// say what you got:
|
|
||||||
Serial.print("I received: ");
|
|
||||||
Serial.println(serial_in, HEX);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,13 @@
|
|||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#ifndef CANNODE_TYPES
|
#ifndef CANNODE_TYPES
|
||||||
#define CANNODE_TYPES
|
#define CANNODE_TYPES
|
||||||
enum out_type { GPIO, PWM, OW, I2C, SPI, LED, DMX, NOP };
|
enum out_type { GPIO, PWM, OW, I2C, SPI, WS2811, DMX, NOP };
|
||||||
enum event_type { LOCAL, SEND};
|
enum event_type { LOCAL, SEND};
|
||||||
|
|
||||||
enum action_type { OFF, ON, VALUE, TOGGLE };
|
enum action_type { OFF, ON, VALUE, TOGGLE };
|
||||||
enum telegram_type { ALERT, EVENT, NOTIFY, INFO };
|
enum telegram_type { ALERT, EVENT, NOTIFY, INFO };
|
||||||
|
|
||||||
typedef struct CAN_telegram_t {
|
typedef struct CAN_telegram_t {
|
||||||
// 3bit prio -
|
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
uint8_t length;
|
uint8_t length;
|
||||||
uint8_t buf[8];
|
uint8_t buf[8];
|
||||||
|
@ -10,16 +10,16 @@
|
|||||||
#define N_ACTIONS 64
|
#define N_ACTIONS 64
|
||||||
|
|
||||||
#define DEBUG 0 // 1 for noisy serial
|
#define DEBUG 0 // 1 for noisy serial
|
||||||
#define ONBOARD_LED 13
|
#define LED 13
|
||||||
|
|
||||||
#define LED_PIN 20
|
#define RELAY1 0
|
||||||
#define COLOR_ORDER GRB
|
#define RELAY2 1
|
||||||
#define CHIPSET WS2812
|
#define RELAY3 23
|
||||||
#define NUM_LEDS 4
|
#define RELAY4 22
|
||||||
|
#define RELAY5 17
|
||||||
#define BRIGHTNESS 255
|
#define RELAY6 16
|
||||||
//#define TEMP Tungsten100W
|
#define RELAY7 9
|
||||||
#define TEMP Candle
|
#define RELAY8 10
|
||||||
|
|
||||||
// OneWire
|
// OneWire
|
||||||
#define OW_pin 14
|
#define OW_pin 14
|
||||||
@ -45,10 +45,9 @@ static outputs_t outputs[N_OUTPUTS] PROGMEM={
|
|||||||
{ GPIO, 22, 0, true }, // 3
|
{ GPIO, 22, 0, true }, // 3
|
||||||
{ GPIO, 17, 0, true }, // 4
|
{ GPIO, 17, 0, true }, // 4
|
||||||
{ GPIO, 16, 0, true }, // 5
|
{ GPIO, 16, 0, true }, // 5
|
||||||
{ GPIO, 19, 255, true }, // 6
|
{ GPIO, 9, 255, true }, // 6
|
||||||
{ GPIO, 18, 0, true }, // 7
|
{ GPIO, 10, 0, true }, // 7
|
||||||
{ LED, 21, 0, false }, // 8
|
{ NOP, 0xFF, 0, 0 }
|
||||||
{ NOP, 0xFF, 0, 0 },
|
|
||||||
};
|
};
|
||||||
static uint8_t outputs_state[N_OUTPUTS];
|
static uint8_t outputs_state[N_OUTPUTS];
|
||||||
// ID:
|
// ID:
|
||||||
@ -100,7 +99,6 @@ static action_t action_map[N_ACTIONS] PROGMEM={
|
|||||||
{7, 6},
|
{7, 6},
|
||||||
{8, 7},
|
{8, 7},
|
||||||
{9, 0},{9, 1},{9, 2},{9, 3},{9, 4},{9, 5},{9, 6},{9, 7},
|
{9, 0},{9, 1},{9, 2},{9, 3},{9, 4},{9, 5},{9, 6},{9, 7},
|
||||||
{10, 8},
|
|
||||||
{210, 210},
|
{210, 210},
|
||||||
{211, 211},
|
{211, 211},
|
||||||
{220, 220},
|
{220, 220},
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
#include "CANNode.h"
|
||||||
// Configuration
|
// Configuration
|
||||||
#define NODE_ID 0x03
|
#define NODE_ID 0x03
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user