Появилась нужда в устройстве которое определяет провод в жгуте, есть жгут в "Авто" и ардуина с кучей крокодилов, цепляем её на массу и на провода в жгуте, а с другой стороны жгута сижу я, 2ая ардуинка подключена на массу, и щупом тыкаю в провода, с выводом номера провода на дисплей
Столкнулся с проблемой при чтении ШИМ или отправке, на приёмнике получаю 0 или 180
спустя несколько часов решил воспользоваться OpenAi, но результат не поменялся
Столкнулся с проблемой при чтении ШИМ или отправке, на приёмнике получаю 0 или 180
спустя несколько часов решил воспользоваться OpenAi, но результат не поменялся
Приёмник:
// Приемник (Arduino 2)
// Используем аналоговый пин для приема сигнала
const int inputPin = A0; // Один аналоговый пин для приема ШИМ
const int tolerance = 10; // Допуск для определения ШИМ значений
void setup() {
pinMode(inputPin, INPUT); // Настройка пина как вход
Serial.begin(9600); // Начало последовательной связи
}
void loop() {
// Чтение аналогового значения с пина
int analogValue = analogRead(inputPin); // Чтение значения (от 0 до 1023)
Serial.println(analogValue);
// Преобразуем аналоговое значение в значение ШИМ (от 0 до 255)
int pwmValue = map(analogValue, 0, 1023, 0, 255);
// Определение, какое значение ШИМ было отправлено, с учетом допуска
if (withinRange(pwmValue, 128, tolerance)) {
Serial.println("Принят ШИМ сигнал с пина A0");
} else if (withinRange(pwmValue, 200, tolerance)) {
Serial.println("Принят ШИМ сигнал с пина A1");
} else if (withinRange(pwmValue, 255, tolerance)) {
Serial.println("Принят ШИМ сигнал с пина A2");
} else {
Serial.println("Неизвестный сигнал");
}
delay(100); // Пауза для предотвращения перегрузки
}
// Функция для проверки попадания значения в диапазон с допуском
bool withinRange(int value, int target, int tolerance) {
return (value >= target - tolerance) && (value <= target + tolerance);
}
Передатчик:
// Передатчик (Arduino 1)
// Используем аналоговые пины как выходы
const int analogPins[] = {3, 5, 6}; // Аналоговые пины для передачи ШИМ
const int pwmValues[] = {128, 200, 255}; // Значения ШИМ для каждого пина
void setup() {
// Настройка аналоговых пинов как выходов
for (int i = 0; i < 3; i++) {
pinMode(analogPins[i], OUTPUT);
}
Serial.begin(9600); // Для отладки
}
void loop() {
// Поочередная передача ШИМ-сигналов через аналоговые пины
for (int i = 0; i < 3; i++) {
analogWrite(analogPins[i], pwmValues[i]); // Отправка ШИМ-сигнала через аналоговый пин
Serial.print("Отправка ШИМ с пина:");
Serial.print(i);
Serial.print(", значение ШИМ: ");
Serial.println(pwmValues[i]);
delay(5000); // Пауза перед отправкой на следующий пин
// Отключение сигнала на текущем пине
analogWrite(analogPins[i], 0);
}
}