@VictorArx, https://arduinolab.pw/index.php/2017/06/23/cifrovoj-potenciometr-x9c103s/?ysclid=mic5vvza7f856473013
а в чем у вас трудность? в инете вроде всё легко находится.
а в чем у вас трудность? в инете вроде всё легко находится.
// Определение контактов X9C
// В зависимости от модели, контакты могут отличаться.
// Подключитесь к даташиту вашего чипа X9C для точных контактов.
const int CS_PIN = 4; // Chip Select
const int INS_PIN = 3; // Up
const int UD_PIN = 2; // Down
const int pot = A0;
int val =0 ;
void setup() {
Serial.begin(9600);
// Инициализация SPI
pinMode(CS_PIN, OUTPUT);
pinMode(INS_PIN, OUTPUT);
pinMode(UD_PIN, OUTPUT);
pinMode(pot,INPUT);
// Начальное состояние потенциометра
digitalWrite(CS_PIN, HIGH);
digitalWrite(INS_PIN, HIGH);
digitalWrite(UD_PIN, HIGH);
}
void loop() {
// Проверка на максимальное сопротивление
digitalWrite(UD_PIN,LOW);
digitalWrite(CS_PIN,LOW);
for (int i = 0; i < 100; i++) {
digitalWrite(INS_PIN,LOW);
delayMicroseconds(1);
digitalWrite(INS_PIN,HIGH);
delayMicroseconds(1);
}
digitalWrite(CS_PIN, HIGH);
{
int val = analogRead(pot); // Считываем аналоговое значение с пина A0 (от 0 до 1023)
Serial.println(val); // Выводим считанное значение в монитор порта
delay(500); // НебольшаяdigitalWrite(INS_PIN, LOW);
digitalWrite(UD_PIN, HIGH); // Направление "вверх"
// Небольшая задержка для стабилизации
}
digitalWrite(UD_PIN,HIGH);
digitalWrite(CS_PIN, LOW);
for (int i = 100; i > 0; i--) {
digitalWrite(INS_PIN,LOW);
delayMicroseconds(1);
digitalWrite(INS_PIN,HIGH);
delayMicroseconds(1);
int val = analogRead(pot); // Считываем аналоговое значение с пина A0 (от 0 до 1023)
Serial.println(val); // Выводим считанное значение в монитор порта
delay(500); // НебольшаяdigitalWrite(INS_P
// После проверки можно провести дополнительную проверку,
// подключив потенциометр как реостат
// и измерив сопротивление с помощью мультиметра
} // при различных положениях потенциометра.
}
А ничего и не будет меняться. Я же вам писал уже об этом.в коде делал инкремент и декремент
for (int i=0; i<100; i++)
for (int i=100; i>percent; i--) ничего не меняется
Но вы упорно это игнорируете, придумали себе что именно из-за i++ или из-за i-- и происходит изменение сопротивления. НЕТ. В этой строке вы прописали сколько раз нужно повторить действия в цикле for, то есть всё то, что написано после фигурных скобок.Хоть так
for (int i=100; i>=0; i--);
Хоть так
for (int i=0; i<100; i++)
микроконтроллеру не важно в какую сторону считать, а микросхеме сопротивлений вообще фиолетово, что кто и как считает
#define CS 4
#define INC 3
#define UD 2
#define POT A0
void wiperUp(void);
void wiperDown(void);
void setup() {
pinMode(CS,OUTPUT);
pinMode(INC,OUTPUT);
pinMode(UD,OUTPUT);
Serial.begin(9600);
}
void loop(){
for(int i=0;i<100;i++){
wiperUp();
Serial.println(analogRead(POT));
}
for(int i=0;i<100;i++){
wiperDown();
Serial.println(analogRead(POT));
}
delay(3000);
}
void wiperUp(void) {
digitalWrite(CS,HIGH);
digitalWrite(UD,HIGH);
delay(1);
digitalWrite(INC,HIGH);
delay(1);
digitalWrite(CS,LOW);
delay(1);
digitalWrite(INC,LOW);
delay(1);
digitalWrite(INC,HIGH);
delay(1);
digitalWrite(CS,HIGH);
}
void wiperDown(void) {
digitalWrite(CS,HIGH);
digitalWrite(UD,LOW);
delay(1);
digitalWrite(INC,HIGH);
delay(1);
digitalWrite(CS,LOW);
delay(1);
digitalWrite(INC,LOW);
delay(1);
digitalWrite(INC,HIGH);
delay(1);
digitalWrite(CS,HIGH);
}
после этих проц следует добавить задержку на 500-1000 мс, а то так они пролетают так быстро, что глазом моргнуть не успеешь. а неумеющие читать чужой код это не понимают.void wiperUp(void); void wiperDown(void);
Я там в начале скетча чуток неправильно директивы записал.@r4wabr, благодарю, сейчас попробую.
#define CS 4
#define INC 3
#define UD 2
#define POT A0
а ты сопротивление мультиметром измеряешь?Уменьшается до 0 и усё.
Не меряю мультиметром, только монитор порта.а ты сопротивление мультиметром измеряешь?
а еще ... (с аналоговыми пинами я давно развлекался, не помню как там и что) ... не надо там pinMode input назначать?
Всё подключено. Результат второго цикла много нулей, затем снова 1023 уменьшается. Ладно ребята, спасибо всем, далее сам.@VictorArx,
Странно. А где результат второго цикла? И как выход потенциометра подключен а плате? +5v, A0, GND?
Покажите тот код, который получился. Только именно тот код, который дал вам картинку в мониторе порта, которую вы приводили в #68, НИЧЕГО НЕ МЕНЯЯ.скопировал ваш код, но там настолько быстро в мониторе порта ничего не могу разобрать. Сделал на двух циклах задержку 1000 мс

#define CS 4
#define INC 3
#define UD 2
#define POT A0
void wiperUp(void);
void wiperDown(void);
void setup() {
pinMode(CS,OUTPUT);
pinMode(INC,OUTPUT);
pinMode(UD,OUTPUT);
Serial.begin(9600);
}
void loop(){
for(int i=0;i<100;i++){
wiperUp();
Serial.println(analogRead(POT));
}
for(int i=0;i<100;i++){
wiperDown();
Serial.println(analogRead(POT));
}
delay(3000);
}
void wiperUp(void) {
digitalWrite(CS,HIGH);
digitalWrite(UD,HIGH);
delay(1);
digitalWrite(INC,HIGH);
delay(1);
digitalWrite(CS,LOW);
delay(1);
digitalWrite(INC,LOW);
delay(1);
digitalWrite(INC,HIGH);
delay(1);
digitalWrite(CS,HIGH);
}
void wiperDown(void) {
digitalWrite(CS,HIGH);
digitalWrite(UD,LOW);
delay(1);
digitalWrite(INC,HIGH);
delay(1);
digitalWrite(CS,LOW);
delay(1);
digitalWrite(INC,LOW);
delay(1);
digitalWrite(INC,HIGH);
delay(1);
digitalWrite(CS,HIGH);
}
ок, тоже заказалзаказал ещё потенциометр, когда получу отпишусь.