Инструменты пользователя

Инструменты сайта


mpt:доработка_скетча_с_веб-панелью

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
mpt:доработка_скетча_с_веб-панелью [14.06.2019 08:35]
buh [Доработка скетча с веб-панелью.]
mpt:доработка_скетча_с_веб-панелью [18.06.2019 09:16] (текущий)
buh
Строка 1: Строка 1:
-====== Доработка скетча с веб-панелью. ====== 
- --- //​[[admin@artonit.ru|Бухаров А.В.]] 2019/06/14 08:24// 
  
-[[https://​all-arduino.ru/​arduino-dlya-nachinayushhih-urok-14-preryvaniya/​]] - тут пример обработки аппаратного прерывания ​INT0 (в этой статье и про дребезг ​контактов написано).  +====== Про прерывания от W5500, ​которых нет ====== 
-<​code>​ + --- //[[admin@artonit.ru|Бухаров ​А.В.]] 2019/06/18 09:08//
-// Назначение прерывания +
-int buttonInt = 0; +
-  +
-// Переменные с пинами светодиодов +
-int yellowLed ​11; +
-int redLed ​10; +
-int greenLed ​9; +
-int nullLed ​6; +
-volatile int selectedLed ​greenLed; +
-  +
-// Инфракрасный дальномер +
-int distPin ​0; +
-  +
-void setup () { +
- // ​Устанавливаем ​режимы пинов +
- ​pinMode(redLed,​ OUTPUT); +
- ​pinMode(greenLed,​ OUTPUT); +
- ​pinMode(yellowLed,​ OUTPUT); +
- ​pinMode(nullLed,​ OUTPUT); +
-  +
- // Устанавливаем прерывание +
- ​attachInterrupt(buttonInt,​ swap, RISING); +
-  +
-+
-  +
-// Обработчик прерывания +
-void swap() { +
- ​if(selectedLed == greenLed) +
- ​selectedLed = redLed; +
- else if(selectedLed == redLed) +
- ​selectedLed = yellowLed;​ +
- else if(selectedLed == yellowLed) +
- ​selectedLed = nullLed; +
- ​else +
- ​selectedLed = greenLed; +
-+
-  +
-void loop () { +
- // Получаем данные с дальномера +
- int dist = analogRead(distPin);​ +
- int brightness = map(dist, 0, 1023, 0, 255); +
-  +
- // Управляем яркостью +
- ​analogWrite(selectedLed,​ brightness);​ +
-}+
  
-Необходимо использовать ключевое слово «volatile» ​перед объявлением переменной значение ​которой будет изменяться ​в обработчике прерывания.</code>+В ходе проведенных ​опытов мы выяснили, что прерывание от W5500 нет. 
 + 
 +В этой статье http://​www.cyberforum.ru/​digital-signal-processing/​thread2094151.html указано, что для получения прерываний необходимо перевести сокеты ​в состояние  ​listen().\\ Хотя описание ​дано для W5100, я думаю, что и для W5500 оно тоже ​подойдет. 
 + 
 +Надо проверить.  
 +Но как? 
 +Вот тут приведено ​описание ​библиотеки ethernet: https://​doc.arduino.ua/​ru/​prog/​Ethernet 
 + 
 +Про listen() нет ни слова. Кирилл! Надо разбираться
 + 
 + 
 +---- 
 +====== Доработка скетча с веб-панелью. ====== 
 + --- //​[[admin@artonit.ru|Бухаров А.В.]] 2019/06/14 08:24//
  
  
Строка 62: Строка 28:
  
 Именно этот код работал на презентации. Именно этот код работал на презентации.
 +
 +----
  
  
/home/cardsoft/artonit.ru/docs/wiki/data/attic/mpt/доработка_скетча_с_веб-панелью.1560490535.txt.gz · Последние изменения: 14.06.2019 08:35 — buh