Различия

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

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

Следующая версия
Предыдущая версия
products:laboratory_iot_c:exp30 [2024/11/15 17:24] – создано labuser30products:laboratory_iot_c:exp30 [2024/11/15 17:29] (текущий) – [Программный код эксперимента] labuser30
Строка 11: Строка 11:
  
 ==== Программный код эксперимента ==== ==== Программный код эксперимента ====
-<file python Exp30.py[enable_line_numbers="2", start_line_numbers_at="1"]> +<file arduino Exp30.ino[enable_line_numbers="2", start_line_numbers_at="1"]> 
-from machine import I2C, Pin +#include <LCDI2C_Multilingual.h>
-from esp8266_i2c_lcd import I2cLcd +
-_init()+
  
-DEFAULT_I2C_ADDR 0x3F Или 0x27 в зависимости от модели микросхемы на плате+#define DEFAULT_I2C_ADDR 0x3F // Или 0x27 в зависимости от твоей платы IoT
  
-i2c = I2C(scl=Pin(5), sda=Pin(4), freq=400000) +LCDI2C_Generic lcd(DEFAULT_I2C_ADDR, 16, 2)
-lcd = I2cLcd(i2c, DEFAULT_I2C_ADDR, 2, 16) +
-lcd.backlight_on()+
  
-char1 +byte char1[8] = { 
-0b00000, +  0b00000, 
-0b00000, +  0b00000, 
-0b01010, +  0b01010, 
-0b01010, +  0b01010, 
-0b00000, +  0b00000, 
-0b10001, +  0b10001, 
-0b01110, +  0b01110, 
-0b00000 +  0b00000 
-]+};
  
-char2 +byte char2[8] = { 
-0b10101, +  0b10101, 
-0b10101, +  0b10101, 
-0b10101, +  0b10101, 
-0b01110, +  0b01110, 
-0b10101, +  0b10101, 
-0b10101, +  0b10101, 
-0b10101, +  0b10101, 
-0b00000 +  0b00000 
-]+};
  
-lcd.custom_char(0, char1) +void setup() { 
-lcd.custom_char(1, char2)+  lcd.init();  
 +  lcd.setBacklight(0); 
 +  lcd.createChar(0, char1); 
 +  lcd.createChar(1, char2)
 +  lcd.setCursor(0, 0);  
 +  lcd.write(byte(0));  
 +  lcd.write(byte(1)); 
 +}
  
-lcd.move_to(0,0+void loop() { 
- +}
-lcd.putchar(chr(0)) +
-lcd.putchar(chr(1))+
 </file> </file>
  
 В программе мы как обычно подключили библиотеки, задали адрес контроллера дисплея на шине I2C, настроили контроллер I2C и дисплей, включили подсветку. После этого мы объявляем массив ''char1'': В программе мы как обычно подключили библиотеки, задали адрес контроллера дисплея на шине I2C, настроили контроллер I2C и дисплей, включили подсветку. После этого мы объявляем массив ''char1'':
  
-<code python[enable_line_numbers="2", start_line_numbers_at="11"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="7"]> 
-char1 +byte char1[8] = { 
-0b00000, +  0b00000, 
-0b00000, +  0b00000, 
-0b01010, +  0b01010, 
-0b01010, +  0b01010, 
-0b00000, +  0b00000, 
-0b10001, +  0b10001, 
-0b01110, +  0b01110, 
-0b00000 +  0b00000 
-]+};
 </code> </code>
  
-Массив состоит из чисел, записанных в двоичной системе счисления. В этой форме очень удобно записывать, ведь единице соответствует включенный пиксель на данном месте, нулю — выключенный. В массиве 8 чисел — по одному на строку. Чтобы интерпретатор Python понял, что числа записаны в двоичной системе счисления они начинаются со специальных символов ''0b''. Можно было бы записать эти данные и в обычной десятичной системе, но только это не было бы наглядно. Например 0b10001 это десятичное число 17.+Массив состоит из чисел, записанных в двоичной системе счисления. В этой форме очень удобно записывать, ведь единице соответствует включенный пиксель на данном месте, нулю — выключенный. В массиве 8 чисел — по одному на строку. Чтобы компилятор понял, что числа записаны в двоичной системе счисления они начинаются со специальных символов ''0b''. Можно было бы записать эти данные и в обычной десятичной системе, но только это не было бы наглядно. Например 0b10001 это десятичное число 17.
  
 Таким же образом мы создаем второй символ. Теперь, когда символы созданы, их нужно записать в память дисплея.  Таким же образом мы создаем второй символ. Теперь, когда символы созданы, их нужно записать в память дисплея. 
-<code python[enable_line_numbers="2", start_line_numbers_at="33"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="32"]> 
-lcd.custom_char(0, char1) +  lcd.createChar(0, char1); 
-lcd.custom_char(1, char2)+  lcd.createChar(1, char2);
 </code> </code>
  
Строка 79: Строка 80:
  
 Ставим курсор в левый верхний угол, на место первого символа. Это нулевое место нулевой строки так как нумерация мест и строк ведется от нуля: Ставим курсор в левый верхний угол, на место первого символа. Это нулевое место нулевой строки так как нумерация мест и строк ведется от нуля:
-<code python[enable_line_numbers="2", start_line_numbers_at="36"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="34"]> 
-lcd.move_to(0,0)+  lcd.setCursor(0, 0)
 </code> </code>
  
 Печатаем на дисплее символы. Они выводятся туда, куда мы поставили курсор: Печатаем на дисплее символы. Они выводятся туда, куда мы поставили курсор:
-<code python[enable_line_numbers="2", start_line_numbers_at="38"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="35"]> 
-lcd.putchar(chr(0)) +  lcd.write(byte(0)) 
-lcd.putchar(chr(1))+  lcd.write(byte(1));
 </code> </code>