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
 | 
			
		||||

 | 
			
		||||
@ -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