Add rudimentary support for buttons states
This commit is contained in:
@@ -17,15 +17,22 @@ enum Module {
|
|||||||
|
|
||||||
message Command {
|
message Command {
|
||||||
enum Type {
|
enum Type {
|
||||||
PING = 1;
|
SERVER = 1;
|
||||||
CONSTRUCT = 2;
|
PING = 2;
|
||||||
SET_LED = 10;
|
CONSTRUCT = 3;
|
||||||
|
SET_LED = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
required Type type = 1;
|
required Type type = 1;
|
||||||
optional Ping ping = 2;
|
optional Server server = 2;
|
||||||
optional Construct construct = 3;
|
optional Ping ping = 3;
|
||||||
optional SetLed setLed = 10;
|
optional Construct construct = 4;
|
||||||
|
optional SetLed setLed = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Server {
|
||||||
|
optional string host = 1;
|
||||||
|
required int32 port = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
message Ping {
|
message Ping {
|
||||||
@@ -34,7 +41,7 @@ message Ping {
|
|||||||
|
|
||||||
message Echo {
|
message Echo {
|
||||||
required int32 id = 1;
|
required int32 id = 1;
|
||||||
optional string message = 2;// [(nanopb).max_size = 40];
|
optional string message = 2 [(nanopb).max_size = 40];
|
||||||
}
|
}
|
||||||
|
|
||||||
message Construct {
|
message Construct {
|
||||||
@@ -51,4 +58,8 @@ message SetLed {
|
|||||||
required Color color = 1;
|
required Color color = 1;
|
||||||
required int32 pos = 2;
|
required int32 pos = 2;
|
||||||
optional int32 id = 3 [default = 1];
|
optional int32 id = 3 [default = 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
message Buttons {
|
||||||
|
required byte buttons;
|
||||||
}
|
}
|
||||||
34
src/main.cpp
34
src/main.cpp
@@ -8,7 +8,6 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#include "pb_decode.h"
|
#include "pb_decode.h"
|
||||||
#include "pb_encode.h"
|
#include "pb_encode.h"
|
||||||
#include "beerduino.pb.h"
|
|
||||||
#include "tm1638.pb.h"
|
#include "tm1638.pb.h"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -17,15 +16,25 @@ TM1638 *tm1638[6];
|
|||||||
TM16XX *module;
|
TM16XX *module;
|
||||||
|
|
||||||
int t = 123;
|
int t = 123;
|
||||||
int id;
|
int id = 0;
|
||||||
|
byte pressed = 0;
|
||||||
_tm1638_Construct construct;
|
_tm1638_Construct construct;
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
Serial.begin(9600);
|
Serial.begin(9600);
|
||||||
|
tm1638[0] = new TM1638(8, 9, 7);
|
||||||
|
tm1638[0]->setupDisplay(true, 1);
|
||||||
|
tm1638[0]->setLED(TM1638_COLOR_RED, 2);
|
||||||
|
tm1638[0]->setDisplayToDecNumber(111, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void sendButtons(int id, byte buttons) {
|
||||||
|
/*_tm1638_Buttons x = {id, buttons};
|
||||||
|
uint8_t out_buffer[256];
|
||||||
|
pb_ostream_t ostream = pb_ostream_from_buffer(out_buffer, sizeof(out_buffer));
|
||||||
|
if (pb_encode_delimited(&ostream, tm1638_Buttons_fields, &x)) {
|
||||||
|
Serial.write(out_buffer, ostream.bytes_written);
|
||||||
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void sendEcho(int id, char message[]) {
|
void sendEcho(int id, char message[]) {
|
||||||
@@ -38,8 +47,17 @@ void sendEcho(int id, char message[]) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
byte buttons = tm1638[0]->getButtons();
|
||||||
|
if (buttons != pressed) {
|
||||||
|
//sendButtons(0, buttons);
|
||||||
|
sendEcho(buttons, "Buttons!");
|
||||||
|
pressed = buttons;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void serialEvent() {
|
void serialEvent() {
|
||||||
if(Serial.available()) {
|
if (Serial.available()) {
|
||||||
int packet_size = Serial.read();
|
int packet_size = Serial.read();
|
||||||
uint8_t in_buffer[256];
|
uint8_t in_buffer[256];
|
||||||
int bytes_read = Serial.readBytes((char*) in_buffer, packet_size);
|
int bytes_read = Serial.readBytes((char*) in_buffer, packet_size);
|
||||||
@@ -56,18 +74,16 @@ void serialEvent() {
|
|||||||
case tm1638_Command_Type_PING:
|
case tm1638_Command_Type_PING:
|
||||||
if (command.has_ping) {
|
if (command.has_ping) {
|
||||||
_tm1638_Ping ping = command.ping;
|
_tm1638_Ping ping = command.ping;
|
||||||
sendEcho(ping.id, "Pong");
|
sendEcho(ping.id, "Pong");
|
||||||
tm1638[0]->setDisplayToDecNumber(ping.id, 0);
|
tm1638[0]->setDisplayToDecNumber(ping.id, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case tm1638_Command_Type_CONSTRUCT:
|
case tm1638_Command_Type_CONSTRUCT:
|
||||||
construct = command.construct;
|
construct = command.construct;
|
||||||
id = construct.id;
|
id = construct.id;
|
||||||
sendEcho(0, "ID:");
|
|
||||||
switch (construct.module) {
|
switch (construct.module) {
|
||||||
case tm1638_Module_TM1638:
|
case tm1638_Module_TM1638:
|
||||||
tm1638[0] = new TM1638((byte) construct.dataPin, (byte) construct.clockPin, (byte) construct.strobePin, construct.activateDisplay, (byte) construct.intensity);
|
tm1638[0] = new TM1638((byte) construct.dataPin, (byte) construct.clockPin, (byte) construct.strobePin, construct.activateDisplay, (byte) construct.intensity);
|
||||||
// tm1638[0] = new TM1638(8, 9, 7);
|
|
||||||
tm1638[0]->setupDisplay(true, 1);
|
tm1638[0]->setupDisplay(true, 1);
|
||||||
break;
|
break;
|
||||||
case tm1638_Module_InvertedTM1638:
|
case tm1638_Module_InvertedTM1638:
|
||||||
|
|||||||
Reference in New Issue
Block a user