Задать вопрос
IDma88
@IDma88
Программист C++

Почему не считается остаток от деления в Arduino?

Имеем код, написанный в Arduino IDE:
void setup() { 
	Serial.begin(4800); 
} 

void loop() { 
	Serial.write((7 % 5) + 65);
}


Исходя из правил математики в выражении (7 % 5) + 65 мы должны получить 67, однако реально Arduino будет писать в порт 72.

Как я не пытался, но оператор "%" (остаток от деления) у меня не работает.
Что я делаю не так?
  • Вопрос задан
  • 3230 просмотров
Подписаться Оценить Комментировать
Решения вопроса 1
IDma88
@IDma88 Автор вопроса
Программист C++
Вопрос можно считать закрытым, т.к. проблема оказалась в Proteus'е, который я использовал для симуляции.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
a_volkov1987
@a_volkov1987
Инженер-схемотехник
arduino.ru/Reference/Serial/Write
arduino.ru/Reference/Serial/Print

Видите разницу?
В первом случае вы результат отправите как бинарный код. И монитор порта отобразит совсем не то, что вы ожидаете.
Во втором случае вы результат отправите как ASCII текст. То есть, что отправите, то и увидите в мониторе.

Попробуйте просто для сравнения:
Serial.write(65);
Serial.write("65");
Serial.print(65);

Вывод: проблема не в математике, проблема в формате вывода результата в порт.
7704bdbbbae94ba498493b97e096d07e.png

UPD: ТС для проверки использует Proteus, я - Arduino Leonardo
Ответ написан
@antonsr98
Системный Администратор
деление же через / :)
почитайте arduino.ru/Reference/Arithmetic полезно :)
Ответ написан
Redfern89
@Redfern89
Пишу код под МК AVR, начинающий сисадмин
Поробуйте так
float a = (7 % 5) + 65;
Serial.print(a);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы