canbus baby
parent
50d2f8f9b5
commit
6437b2ab60
@ -1,3 +1,13 @@
|
|||||||
# ESP32 Playgroung
|
# ESP32 Playground
|
||||||
|
|
||||||
|
## Setting up the Debug
|
||||||
|
|
||||||
|
You need the following in your `platformio.ini` order to get the debugger co
|
||||||
|
|
||||||
|
```
|
||||||
|
debug_tool = esp-prog
|
||||||
|
debug_init_break = tbreak setup
|
||||||
|
```
|
||||||
|
|
||||||
|
## Pinout Diagrams
|
||||||
![ESP32_NodeMCU](hiletgo_esp32_pinout.jpg)
|
![ESP32_NodeMCU](hiletgo_esp32_pinout.jpg)
|
@ -1,24 +0,0 @@
|
|||||||
#include <Arduino.h>
|
|
||||||
#include <foo.h>
|
|
||||||
|
|
||||||
#define LED_BUILTIN 2
|
|
||||||
int delayTime = 100;
|
|
||||||
|
|
||||||
void setup()
|
|
||||||
{
|
|
||||||
// put your setup code here, to run once:
|
|
||||||
pinMode(LED_BUILTIN, OUTPUT);
|
|
||||||
Serial.begin(115200);
|
|
||||||
}
|
|
||||||
|
|
||||||
void loop()
|
|
||||||
{
|
|
||||||
// put your main code here, to run repeatedly:
|
|
||||||
Serial.println("Starting loop");
|
|
||||||
digitalWrite(LED_BUILTIN, HIGH);
|
|
||||||
delay(delayTime);
|
|
||||||
digitalWrite(LED_BUILTIN, LOW);
|
|
||||||
Serial.println("Turning off LED");
|
|
||||||
printf("This is main2.cpp!\n");
|
|
||||||
delay(delayTime);
|
|
||||||
}
|
|
@ -0,0 +1,71 @@
|
|||||||
|
// Copyright (c) Sandeep Mistry. All rights reserved.
|
||||||
|
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include <CAN.h>
|
||||||
|
|
||||||
|
#define CAN_RX 22
|
||||||
|
#define CAN_TX 21
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
CAN.setPins(CAN_RX, CAN_TX);
|
||||||
|
Serial.begin(115200);
|
||||||
|
while (!Serial)
|
||||||
|
;
|
||||||
|
delay(10000);
|
||||||
|
Serial.println("CAN Receiver");
|
||||||
|
|
||||||
|
// start the CAN bus at 500 kbps
|
||||||
|
if (!CAN.begin(500E3))
|
||||||
|
{
|
||||||
|
Serial.println("Starting CAN failed!");
|
||||||
|
while (1)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
// try to parse packet
|
||||||
|
int packetSize = CAN.parsePacket();
|
||||||
|
|
||||||
|
if (packetSize)
|
||||||
|
{
|
||||||
|
// received a packet
|
||||||
|
Serial.print("Received ");
|
||||||
|
|
||||||
|
if (CAN.packetExtended())
|
||||||
|
{
|
||||||
|
Serial.print("extended ");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CAN.packetRtr())
|
||||||
|
{
|
||||||
|
// Remote transmission request, packet contains no data
|
||||||
|
Serial.print("RTR ");
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.print("packet with id 0x");
|
||||||
|
Serial.print(CAN.packetId(), HEX);
|
||||||
|
|
||||||
|
if (CAN.packetRtr())
|
||||||
|
{
|
||||||
|
Serial.print(" and requested length ");
|
||||||
|
Serial.println(CAN.packetDlc());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Serial.print(" and length ");
|
||||||
|
Serial.println(packetSize);
|
||||||
|
|
||||||
|
// only print packet data for non-RTR packets
|
||||||
|
while (CAN.available())
|
||||||
|
{
|
||||||
|
Serial.print((char)CAN.read());
|
||||||
|
}
|
||||||
|
Serial.println();
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.println();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,73 @@
|
|||||||
|
#include <Arduino.h>
|
||||||
|
#include <CAN.h>
|
||||||
|
|
||||||
|
#define LED_BUILTIN 2
|
||||||
|
#define CAN_RX 22
|
||||||
|
#define CAN_TX 21
|
||||||
|
|
||||||
|
int result = 0;
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
pinMode(LED_BUILTIN, OUTPUT);
|
||||||
|
digitalWrite(LED_BUILTIN, HIGH);
|
||||||
|
CAN.setPins(CAN_RX, CAN_TX);
|
||||||
|
Serial.begin(115200);
|
||||||
|
while (!Serial)
|
||||||
|
;
|
||||||
|
delay(10000);
|
||||||
|
Serial.println("CAN Sender");
|
||||||
|
|
||||||
|
// start the CAN bus at 500 kbps
|
||||||
|
if (!CAN.begin(500E3))
|
||||||
|
{
|
||||||
|
Serial.println("Starting CAN failed!");
|
||||||
|
while (1)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
// send packet: id is 11 bits, packet can contain up to 8 bytes of data
|
||||||
|
Serial.print("Sending packet ... ");
|
||||||
|
|
||||||
|
result = CAN.beginPacket(0x12);
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
CAN.write('h');
|
||||||
|
CAN.write('e');
|
||||||
|
CAN.write('l');
|
||||||
|
CAN.write('l');
|
||||||
|
CAN.write('o');
|
||||||
|
CAN.endPacket();
|
||||||
|
Serial.println("done");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Serial.println("There was a probelm beginning the packet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
delay(1000);
|
||||||
|
|
||||||
|
// send extended packet: id is 29 bits, packet can contain up to 8 bytes of data
|
||||||
|
Serial.print("Sending extended packet ... ");
|
||||||
|
|
||||||
|
result = CAN.beginExtendedPacket(0xabcdef);
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
CAN.write('h');
|
||||||
|
CAN.write('e');
|
||||||
|
CAN.write('l');
|
||||||
|
CAN.write('l');
|
||||||
|
CAN.write('o');
|
||||||
|
CAN.endPacket();
|
||||||
|
Serial.println("done");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Serial.println("There was a probelm beginning the extended packet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
delay(1000);
|
||||||
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
Eample of using an interrupt to set global state. which is acted on during the loop.
|
||||||
|
Place a switch on Pin 4.
|
||||||
|
*/
|
||||||
|
#include <Arduino.h>
|
||||||
|
|
||||||
|
#define LED_BUILTIN 2
|
||||||
|
|
||||||
|
volatile bool switch_on = false;
|
||||||
|
volatile u_int switch_counter = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Interrupt Callback used to track switch state
|
||||||
|
*/
|
||||||
|
void switch_state()
|
||||||
|
{
|
||||||
|
switch_on = !switch_on;
|
||||||
|
switch_counter = ++switch_counter;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
pinMode(LED_BUILTIN, OUTPUT);
|
||||||
|
pinMode(4, INPUT_PULLUP);
|
||||||
|
Serial.begin(115200);
|
||||||
|
int interrupt_pin_num = digitalPinToInterrupt(4);
|
||||||
|
printf("The interrupt number for pin 4 is: %d", interrupt_pin_num);
|
||||||
|
attachInterrupt(interrupt_pin_num, switch_state, FALLING);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
printf("Our counter is at: %d\n", switch_counter);
|
||||||
|
if (switch_on)
|
||||||
|
{
|
||||||
|
digitalWrite(LED_BUILTIN, HIGH);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
digitalWrite(LED_BUILTIN, LOW);
|
||||||
|
}
|
||||||
|
delay(100);
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
A simple example of using switch to toggle the led builtin.
|
||||||
|
*/
|
||||||
|
#include <Arduino.h>
|
||||||
|
|
||||||
|
#define LED_BUILTIN 2
|
||||||
|
#define SWITCH_INPUT 4
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
// put your setup code here, to run once:
|
||||||
|
pinMode(LED_BUILTIN, OUTPUT);
|
||||||
|
pinMode(SWITCH_INPUT, INPUT_PULLUP);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
if (digitalRead(SWITCH_INPUT))
|
||||||
|
{
|
||||||
|
digitalWrite(LED_BUILTIN, HIGH);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
digitalWrite(LED_BUILTIN, LOW);
|
||||||
|
}
|
||||||
|
delay(500);
|
||||||
|
}
|
Loading…
Reference in New Issue