float phi = 1; // degrees
int uhol = 0; // integer angle
int castprac1 = 1; // duty cycle (from 0 to 2047 parts)
int castprac2 = 1; // duty cycle (from 0 to 2047 parts)
int castprac3 = 1; // duty cycle (from 0 to 2047 parts)
float frequencypwm = 1;
unsigned long past = 1;
float frekvenciavlny = 50;
float amplituda = 1;
unsigned long cas = 0;
float sinval[362]; // 10 stupňov na 1 hodnotu tejto "tabuľky"
float casvlny = 0;
float caspolvlny = 0;
float casvovlne = 0;
float castvlny = 0;
void setup() {
pinMode(18, OUTPUT);
pinMode(19, OUTPUT);
pinMode(20, OUTPUT);
pinMode(21, OUTPUT);
pinMode(22, OUTPUT);
pinMode(23, OUTPUT);
byte anres = 11; // bits // 2048 rôznych hodnôt
Serial.begin(8000000);
analogWriteResolution(18, anres);
analogWriteResolution(19, anres);
analogWriteResolution(20, anres);
analogWriteResolution(21, anres);
analogWriteResolution(22, anres);
analogWriteResolution(23, anres);
frequencypwm = 10000; // Hz
analogWriteFrequency(18, frequencypwm);
analogWriteFrequency(19, frequencypwm);
analogWriteFrequency(20, frequencypwm);
analogWriteFrequency(21, frequencypwm);
analogWriteFrequency(22, frequencypwm);
analogWriteFrequency(23, frequencypwm);
for (int i = 0; i < 361; i = i + 1) {
int z = i * 1;
double radiany = (((double)z * 71.0) / 4068.0);
sinval[i] = 2047 * (abs(sin(radiany)));
Serial.println(sinval[i]);
}
}
void loop() {
cas = micros();
if (Serial.available() > 2) {
frekvenciavlny = Serial.parseFloat();
amplituda = Serial.parseFloat();
Serial.println(frekvenciavlny);
Serial.println(amplituda);
}
//frekvenciavlny = analogRead(A0) / 4;
Serial.println(micros());
casvlny = 1000000.0 / (float)frekvenciavlny;
caspolvlny = (float)casvlny / 2.0;
casvovlne = fmod(cas, casvlny);
castvlny = ((float)casvovlne / (float)casvlny);
phi = 360.0 * castvlny;
phi = fmod(phi, 360.0);
uhol = int(phi);
castprac1 = amplituda * sinval[uhol];
castprac2 = amplituda * sinval[((uhol + 120) % 360)];
castprac3 = amplituda * sinval[((uhol + 240) % 360)];
if (uhol < 180) {
analogWrite(18, castprac1);
analogWrite(19, 0);
} else {
analogWrite(18, 0);
analogWrite(19, castprac1);
}
if (((uhol + 120) % 360) < 180) {
analogWrite(20, castprac2);
analogWrite(21, 0);
} else {
analogWrite(20, 0);
analogWrite(21, castprac2);
}
if (((uhol + 240) % 360) < 180) {
analogWrite(22, castprac3);
analogWrite(23, 0);
} else {
analogWrite(22, 0);
analogWrite(23, castprac3);
}
}
Loading
esp32-c6-devkitc-1
esp32-c6-devkitc-1