// Hardware: ESP32-CAM and PCA9685
// ESP32-CAM Pins:
#define SDA_PIN 13 // Fixed for TL_RAM PCB
#define SCL_PIN 14 // Fixed for TL_RAM PCB
#define PCA_ENABLE_PIN_NO 3 // Fixed for TL_RAM PCB
#define LED_RED_INBUILD_PIN_NO 33 // Fixed for ESP32-CAM
#define LED_FLASH_INBUILD_PIN_NO 4 // Fixed for ESP32-CAM
// PCA9685 Connections
//#define PWM_CHANNEL_NO_M0 0
//#define PWM_CHANNEL_NO_M1 1
//#define PWM_CHANNEL_NO_M2 2
#define PWM_CHANNEL_NO_LED_01_GREEN 15
//#define PWM_CHANNEL_NO_SERVO_M3 14 // Not used in ESRC July 2024
#define PWM_CHANNEL_NO_LED_02_WHITE 13
#define PWM_CHANNEL_NO_LED_03_BLUE 12
#define PWM_CHANNEL_NO_LASER 11 // Not Connected for now
#define PWM_CHANNEL_NO_BUZZER 10
#define PWM_CHANNEL_NO_EM 9 // Yellow/Orange LED
//#define PWM_CHANNEL_NO_EXTRA_PWM 8 // Not Implemented in Hardware: RED LED
#define LED_INBUILD_ON 0
#define LED_INBUILD_OFF 1
#define BASE_PCB_ENABLE LOW
#define BASE_PCB_DISABLE HIGH
#include <Wire.h>
////#include <Adafruit_I2CDevice.h>
#include <Adafruit_PWMServoDriver.h> // PCA9685
////TFT_eSPI tft = TFT_eSPI(); // Invoke custom library
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(); // Default I2C address 0x40
////BluetoothSerial SerialBT;
void setup()
{
// ESP32-CAM Pins:
pinMode(LED_FLASH_INBUILD_PIN_NO, OUTPUT); digitalWrite(LED_FLASH_INBUILD_PIN_NO, LOW); // Flash light OFF
pinMode(LED_RED_INBUILD_PIN_NO, OUTPUT); digitalWrite(LED_RED_INBUILD_PIN_NO, LED_INBUILD_OFF);
pinMode(PCA_ENABLE_PIN_NO, OUTPUT);
//digitalWrite(PCA_ENABLE_PIN_NO, BASE_PCB_DISABLE);
digitalWrite(PCA_ENABLE_PIN_NO, BASE_PCB_ENABLE);
digitalWrite(PCA_ENABLE_PIN_NO, BASE_PCB_ENABLE);
delay(1);
Wire.begin(SDA_PIN, SCL_PIN);
pwm.begin(); //
pwm.setOscillatorFrequency(25000000); // 23 - 27 MHz [ c a l i b r a t i o n ]
pwm.setPWMFreq(50); // Analog servos run at ~50 Hz updates
for(int i =1; i<=5; i++)
{
pwm.setPWM(PWM_CHANNEL_NO_BUZZER, 4096, 0); // BUZZER ON
delay(200);
pwm.setPWM(PWM_CHANNEL_NO_BUZZER, 0, 4096); // BUZZER OFF
delay(200);
}
}
void loop()
{
pwm.setPWM(PWM_CHANNEL_NO_LED_01_GREEN, 4096, 0);
delay(200);
pwm.setPWM(PWM_CHANNEL_NO_LED_01_GREEN, 0, 4096);
delay(200);
pwm.setPWM(PWM_CHANNEL_NO_LED_02_WHITE, 4096, 0);
delay(200);
pwm.setPWM(PWM_CHANNEL_NO_LED_02_WHITE, 0, 4096);
delay(200);
pwm.setPWM(PWM_CHANNEL_NO_LED_03_BLUE , 4096, 0);
delay(200);
pwm.setPWM(PWM_CHANNEL_NO_LED_03_BLUE , 0, 4096);
delay(200);
pwm.setPWM(PWM_CHANNEL_NO_EM, 4096, 0); // EM OFF
delay(200);
pwm.setPWM(PWM_CHANNEL_NO_EM, 0, 4096); // EM ON : Yellow/Orange LED
delay(200);
//pwm.setPWM(PWM_CHANNEL_NO_LASER, 0, 4096); // LASER ON? check
//delay(200);
//pwm.setPWM(PWM_CHANNEL_NO_LASER, 4096, 0); // LASER OFF? check
//delay(200);
delay(200);
}