Arduino:Примеры/HttpClientConsole: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
м (Замена текста — «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">» на «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">»)
 
Нет описания правки
Строка 24: Строка 24:
Подключаем библиотеки [[Arduino:Библиотеки/Bridge|Bridge]], HttpClient и Console.
Подключаем библиотеки [[Arduino:Библиотеки/Bridge|Bridge]], HttpClient и Console.


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
#include <Bridge.h>
#include <Bridge.h>
#include <HttpClient.h>
#include <HttpClient.h>
Строка 32: Строка 32:
В блоке [[Arduino:Справочник языка Arduino/setup()|setup()]] запускаем Bridge и перед переходом в блок [[Arduino:Справочник языка Arduino/loop()|loop()]] ждем инициализации последовательного подключения.
В блоке [[Arduino:Справочник языка Arduino/setup()|setup()]] запускаем Bridge и перед переходом в блок [[Arduino:Справочник языка Arduino/loop()|loop()]] ждем инициализации последовательного подключения.


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
void setup() {
void setup() {
   pinMode(13, OUTPUT);
   pinMode(13, OUTPUT);
Строка 44: Строка 44:
В блоке [[Arduino:Справочник языка Arduino/loop()|loop()]] создаем именованный экземпляр [[Arduino:Библиотеки/Bridge/Класс HttpClient|класса HttpClient]], а затем при помощи функции [[Arduino:Библиотеки/Bridge/Класс HttpClient/get()|client.get()]] вызываем нужный '''URL'''.
В блоке [[Arduino:Справочник языка Arduino/loop()|loop()]] создаем именованный экземпляр [[Arduino:Библиотеки/Bridge/Класс HttpClient|класса HttpClient]], а затем при помощи функции [[Arduino:Библиотеки/Bridge/Класс HttpClient/get()|client.get()]] вызываем нужный '''URL'''.


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
void loop() {
void loop() {
   HttpClient client;
   HttpClient client;
Строка 52: Строка 52:
Если в буфере есть какие-нибудь байты, пришедшие от сервера, считываем их и выводим на монитор порта. Повторяем это каждые пять секунд.
Если в буфере есть какие-нибудь байты, пришедшие от сервера, считываем их и выводим на монитор порта. Повторяем это каждые пять секунд.


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
while (client.available()) {
while (client.available()) {
     char c = client.read();
     char c = client.read();
Строка 65: Строка 65:
Весь скетч полностью смотрите ниже.
Весь скетч полностью смотрите ниже.


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
/*
/*
   HTTP-клиент для Arduino Uno и Mega при помощи Yún Shield
   HTTP-клиент для Arduino Uno и Mega при помощи Yún Shield

Версия от 18:19, 14 мая 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Загрузка логотипа при помощи модуля Arduino Yun Shield[1]

Этот пример для Arduino Yun Shield демонстрирует, как создать простой HTTP-клиент, способный подключаться к интернету и загружать контент. В данном случае мы подключимся к сайту Arduino и загрузим логотип в виде ASCII-текста. Результат будет показан в консоли IDE Arduino, а передаваться будет через WiFi-соединение (не через USB).

Запрограммировав плату, зайдите в меню Инструменты > Порт (Tools > Port) и выберите нужный IP-адрес, а затем откройте монитор порта.

Необходимое оборудование

  • Плата или модуль Yun
  • Беспроводное соединение с интернетом

Цепь

Для этого примера цепи строить не нужно.

Код

Подключаем библиотеки Bridge, HttpClient и Console.

#include <Bridge.h>
#include <HttpClient.h>
#include <Console.h>

В блоке setup() запускаем Bridge и перед переходом в блок loop() ждем инициализации последовательного подключения.

void setup() {
  pinMode(13, OUTPUT);
  digitalWrite(13, LOW);
  Bridge.begin();
  Console.begin();
  while(!Console);
}

В блоке loop() создаем именованный экземпляр класса HttpClient, а затем при помощи функции client.get() вызываем нужный URL.

void loop() {
  HttpClient client;
  client.get("http://www.arduino.cc/asciilogo.txt");

Если в буфере есть какие-нибудь байты, пришедшие от сервера, считываем их и выводим на монитор порта. Повторяем это каждые пять секунд.

while (client.available()) {
    char c = client.read();
    Console.print(c);
  }
  Console.flush();

  delay(5000);
}

Весь скетч полностью смотрите ниже.

/*
  HTTP-клиент для Arduino Uno и Mega при помощи Yún Shield

 Этот пример для Yún101/YunShield/Yún показывает, как создать
 простой HTTP-клиент, способный подключаться к интернету и загружать
 контент. В данном случае мы подключимся к сайту Arduino и загрузим
 ASCII-версию логотипа Arduino. 

 Создан Томом Иго (Tom Igoe) в мае 2013 года,
 модифицирован Марко Брианзой (Marco Brianza) для использования
 консоли

 Этот код не защищен авторским правом.

 http://www.arduino.cc/en/Tutorial/HttpClient

 */

#include <Bridge.h>
#include <HttpClient.h>
#include <Console.h>

void setup() {
  // Запуск Bridge требует около 2 секунд, поэтому есть смысл
  // воспользоваться встроенный светодиодом как индикатором 
  // инициализации библиотеки:
  pinMode(13, OUTPUT);
  digitalWrite(13, LOW);
  Bridge.begin();
  digitalWrite(13, HIGH);

  Console.begin();

  while (!Console); // ждем последовательного подключения:
}

void loop() {
  // инициализируем HttpClient:
  HttpClient client;

  // делаем HTTP-запрос:
  client.get("http://www.arduino.cc/asciilogo.txt");

  // если от сервера доступны какие-нибудь входящие байты, 
  // считываем их и выводим на монитор порта:
  while (client.available()) {
    char c = client.read();
    Console.print(c);
  }
  Console.flush();

  delay(5000);
}

См.также

Внешние ссылки