First init.
This commit is contained in:
65
libraries/Adafruit_seesaw_Library/Adafruit_Crickit.cpp
Normal file
65
libraries/Adafruit_seesaw_Library/Adafruit_Crickit.cpp
Normal file
@@ -0,0 +1,65 @@
|
||||
#include "Adafruit_Crickit.h"
|
||||
|
||||
// the pwm pins
|
||||
#define CRICKIT_NUM_PWM 12
|
||||
static const uint8_t CRICKIT_pwms[CRICKIT_NUM_PWM] = {
|
||||
CRICKIT_SERVO4, CRICKIT_SERVO3, CRICKIT_SERVO2, CRICKIT_SERVO1,
|
||||
CRICKIT_MOTOR_B1, CRICKIT_MOTOR_B2, CRICKIT_MOTOR_A1, CRICKIT_MOTOR_A2,
|
||||
CRICKIT_DRIVE4, CRICKIT_DRIVE3, CRICKIT_DRIVE2, CRICKIT_DRIVE1};
|
||||
|
||||
// the adc pin
|
||||
#define CRICKIT_NUM_ADC 8
|
||||
static const uint8_t CRICKIT_adc[CRICKIT_NUM_ADC] = {
|
||||
CRICKIT_SIGNAL1, CRICKIT_SIGNAL2, CRICKIT_SIGNAL3, CRICKIT_SIGNAL4,
|
||||
CRICKIT_SIGNAL5, CRICKIT_SIGNAL6, CRICKIT_SIGNAL7, CRICKIT_SIGNAL8};
|
||||
|
||||
void Adafruit_Crickit::analogWrite(uint8_t pin, uint16_t value, uint8_t width) {
|
||||
(void)width;
|
||||
|
||||
int8_t p = -1;
|
||||
for (int i = 0; i < CRICKIT_NUM_PWM; i++) {
|
||||
if (CRICKIT_pwms[i] == pin) {
|
||||
p = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (p > -1) {
|
||||
uint8_t cmd[] = {(uint8_t)p, (uint8_t)(value >> 8), (uint8_t)value};
|
||||
this->write(SEESAW_TIMER_BASE, SEESAW_TIMER_PWM, cmd, 3);
|
||||
}
|
||||
}
|
||||
|
||||
uint16_t Adafruit_Crickit::analogRead(uint8_t pin) {
|
||||
uint8_t buf[2];
|
||||
int8_t p = -1;
|
||||
for (int i = 0; i < CRICKIT_NUM_ADC; i++) {
|
||||
if (CRICKIT_adc[i] == pin) {
|
||||
p = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (p > -1) {
|
||||
this->read(SEESAW_ADC_BASE, SEESAW_ADC_CHANNEL_OFFSET + p, buf, 2, 500);
|
||||
uint16_t ret = ((uint16_t)buf[0] << 8) | buf[1];
|
||||
delay(1);
|
||||
return ret;
|
||||
} else
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Adafruit_Crickit::setPWMFreq(uint8_t pin, uint16_t freq) {
|
||||
int8_t p = -1;
|
||||
for (int i = 0; i < CRICKIT_NUM_PWM; i++) {
|
||||
if (CRICKIT_pwms[i] == pin) {
|
||||
p = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (p > -1) {
|
||||
uint8_t cmd[] = {(uint8_t)p, (uint8_t)(freq >> 8), (uint8_t)freq};
|
||||
this->write(SEESAW_TIMER_BASE, SEESAW_TIMER_FREQ, cmd, 3);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user