Ви не увійшли.
Сторінки 1
Возможно, вы можете попробовать TFT LCD by stone. Я уже привык. Это действительно отличный дисплей.www.stoneitech.com
Возможно, вы можете попробовать TFT LCD. Я уже привык. Это действительно отличный дисплей.www.stoneitech.com
I have encountered a similar problem recently, and I am trying to solve it
I have encountered a similar problem recently, and I am trying to solve it
I have encountered a similar problem recently, and I am trying to solve it
I recently had a similar project and encountered some difficulties. Some of my friends suggested that I change a monitor. Maybe you can also try TFT LCD. I've used it before. It's really an excellent monitor
www.stoneitech.com
Недавно я приобрел 6-осевой роботизированный манипулятор и использую arduino uno и последовательный экран для управления им. Сейчас я могу добиться простого захвата роботизированной руки. После этого я хотел бы реализовать циклическое движение руки робота.
Есть ли у кого-нибудь подобный опыт?
Я показываю свои работы в нескольких местах и хочу, чтобы их увидело больше людей.
Есть ли способ решить эту проблему без замены платы?
Поскольку используемый мной последовательный экран имеет свой собственный набор команд, в нем много очень длинных строк.
Вот часть моего кода.
case 56:
if((r_flag1 == 0)&&(RecievedTemp1[14]==2))
{
Serial.println("ST<{"cmd_code":"set_image","type":"image","widget":"image9","image":"circle"}>ET");
r_flag1 = 1;
quan_hang3++;
quan_lie2++;
Serial.println("ST<{"cmd_code":"set_enable","type":"widget","widget":"button8","enable":false}>ET");
}
else if((r_flag1 == 1)&&(RecievedTemp1[14]==2))
{
Serial.println("ST<{"cmd_code":"set_image","type":"image","widget":"image9","image":"x"}>ET");
r_flag1 = 0;
cha_hang3++;
cha_lie2++;
Serial.println("ST<{"cmd_code":"set_enable","type":"widget","widget":"button8","enable":false}>ET");
}
break;
Arduino:1.8.12 (Windows 10), Development board: "Arduino Uno"
The project uses 6336 bytes, which occupies (19%) of the program storage space. The maximum is 32256 bytes. data section exceeds available space in board
Global variables used 3046 bytes, (148%) of dynamic memory, leaving -998 bytes for local variables. The maximum is 2048 bytes.
There is not enough memory; visit the following URL to follow the instructions to reduce memory usage.
http://www.arduino.cc/en/Guide/Troubleshooting#size
Error while compiling for development board Arduino Uno.
Turn on in File -> Preferences
"Show detailed output during compilation" option
This report will contain more information.
Необходимые материалы
Электронный замок KOB
Реле
Реализованная функция
1. регистрация карты.
2. регистрация имени пользователя и пароля.
3. проведение картой для разблокировки электронного замка.
4. Имя пользователя и пароль для разблокировки электронного замка.
Схема подключения
Разработка графического интерфейса пользователя
код
import mfrc522
import time
import _thread
from os import uname
from machine import Pin, UART
#from pyb import UART
#import machine
suos = Pin(32,Pin.OUT)
uart2 = UART(2, baudrate=115200, rx=16,tx=17,timeout=10)
ESP32_HSPI_CLOCK = 14
ESP32_HSPI_SLAVE_SELECT = 15
ESP32_HSPI_MISO = 12
ESP32_HSPI_MOSI = 13
ESP32_MFRC522_RST = 5
rx3 = []
rx_name = []
user_id_flag = False
password_flag = False
temp_id = ''
temp_mima = ''
personnel_id = {'zbw':[236,230,169,47],'lbw':[19,165,93,4]}
personnel_ps = {'zbw':'zbw3366','lbw':'lbwnb'}
admin_password = ('yyds')
button_cmd = [16,1]
edit1_cmd = [16,112]
edit2_cmd = [16,113]
edit3_cmd = [16,114]
if uname()[0] == 'esp32':
rdr = mfrc522.MFRC522(ESP32_HSPI_CLOCK, ESP32_HSPI_MOSI, ESP32_HSPI_MISO, ESP32_MFRC522_RST, ESP32_HSPI_SLAVE_SELECT)
def do_write():
try:
(stat, tag_type) = rdr.request(rdr.REQIDL)
if stat == rdr.OK:
(stat, raw_uid) = rdr.anticoll()
if stat == rdr.OK:
print("New card detected")
print(" - tag type: 0x%02x" % tag_type)
print(" - uid : 0x%02x%02x%02x%02x" % (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3]))
print("")
if rdr.select_tag(raw_uid) == rdr.OK:
key = [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
if rdr.auth(rdr.AUTHENT1A, 8, key, raw_uid) == rdr.OK:
stat = rdr.write(8, b"x00x53x00x54x00x4Fx00x4Ex00x45x0ax0bx0cx0dx0ex0f")
rdr.stop_crypto1()
if stat == rdr.OK:
print("Data written to card")
else:
print("Failed to write data to card")
else:
print("Authentication error")
else:
print("Failed to select tag")
except KeyboardInterrupt:
print("write error")
def do_read():
while True:
try:
(stat, tag_type) = rdr.request(rdr.REQIDL)
if stat == rdr.OK:
(stat, raw_uid) = rdr.anticoll()
if stat == rdr.OK:
print("New card detected")
print(" - tag type: 0x%02x" % tag_type)
print(" - uid : 0x%02x%02x%02x%02x" % (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3]))
print (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3])
print("")
if rdr.select_tag(raw_uid) == rdr.OK:
key = [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
if rdr.auth(rdr.AUTHENT1A, 8, key, raw_uid) == rdr.OK:
print("Address 8 data: %s" % rdr.read(8))
for ps in personnel_id:
if raw_uid[0:4:1] == personnel_id.get(ps):
suos.value(1)
print(ps)
uart_write(ps, *raw_uid[0:4:1])
time.sleep(3)
uart2.sendbreak()
break
rdr.stop_crypto1()
time.sleep(3)
suos.value(0)
else:
print("Authentication error")
else:
print("Failed to select tag")
if uart2.any()>1:
rx2 = []
data_name2 = ''
bin_data = uart2.read(40)
uart2.sendbreak()
rx1 = list(bin_data)
for item in rx1:
rx2.append(chr(item))
print(rx2)
if rx1[3:5:1] == button_cmd:
data_name_len = rx1[6] - 1
data_name = rx2[7:data_name_len+7:1]
data_name2 = ''.join(data_name)
print(data_name2)
if data_name2 == 'back3':
return
except KeyboardInterrupt:
print("read error")
def do_read2 (idd):
print(idd)
while True:
try:
(stat, tag_type) = rdr.request(rdr.REQIDL)
if stat == rdr.OK:
(stat, raw_uid) = rdr.anticoll()
if stat == rdr.OK:
print("New card detected")
print(" - tag type: 0x%02x" % tag_type)
print(" - uid : 0x%02x%02x%02x%02x" % (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3]))
print (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3])
print("")
if rdr.select_tag(raw_uid) == rdr.OK:
key = [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
if rdr.auth(rdr.AUTHENT1A, 8, key, raw_uid) == rdr.OK:
print("Address 8 data: %s" % rdr.read(8))
personnel_id[idd] = raw_uid[0:4:1]
uart_write3(*raw_uid[0:4:1])
rdr.stop_crypto1()
else:
print("Authentication error")
else:
print("Failed to select tag")
if uart2.any()>1:
rx2 = []
data_name2 = ''
bin_data = uart2.read(40)
uart2.sendbreak()
rx1 = list(bin_data)
for item in rx1:
rx2.append(chr(item))
if rx1[3:5:1] == button_cmd:
data_name_len = rx1[6] - 1
data_name = rx2[7:data_name_len+7:1]
data_name2 = ''.join(data_name)
print(data_name2)
if data_name2 == 'back1':
return
except KeyboardInterrupt:
print("read error")
def uart_write(text, *ids):
# print(text, *ids)
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"cardname1","text":"'+str(text)+'"}>ET')
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"cardid1","text":"'+str(ids)+'"}>ET')
uart2.write('ST<{"cmd_code":"set_visible","type":"widget","widget":"lock1","visible":true}>ET')
time.sleep(3)
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"cardname1","text":"''"}>ET')
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"cardid1","text":"''"}>ET')
uart2.write('ST<{"cmd_code":"set_visible","type":"widget","widget":"lock1","visible":false}>ET')
def uart_write2(text,text2):
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"cardid","text":"'+text+'"}>ET')
time.sleep(3)
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"cardid","text":"'+text2+'"}>ET')
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"edit2","text":"''"}>ET')
def uart_write3(*id2):
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"cardid","text":"'+str(id2)+'"}>ET')
time.sleep(3)
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"cardid","text":"''"}>ET')
def uart_write4(text,text2):
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"login","text":"'+text+'"}>ET')
time.sleep(1)
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"login","text":"'+text2+'"}>ET')
time.sleep(1)
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"edit3","text":"''"}>ET')
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"edit4","text":"''"}>ET')
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"edit7","text":"''"}>ET')
def uart_write5():
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"cardid","text":"'+str(id2)+'"}>ET')
time.sleep(3)
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"cardid","text":"''"}>ET')
def card_zhuce():
while True:
if uart2.any():
user_id = ''
password = ''
rx2 = []
rx_num = 0
bin_data = uart2.read(40)
uart2.sendbreak()
rx1 = list(bin_data)
for item in rx1:
rx2.append(chr(item))
rx_num += 1
data_end = rx_num-5
data_id_st = rx2[8:13:1]
data_id_st2 = ''.join(data_id_st)
print(data_id_st2)
if data_id_st2 == 'edit1':
data_id_st3 = rx2[15:data_end:1]
data_id_st4 = ''.join(data_id_st3)
print(data_id_st4)
if data_id_st4 != '':
name = True
elif data_id_st2 == 'edit2':
data_id_st5 = rx2[15:data_end:1]
data_id_st6 = ''.join(data_id_st5)
if data_id_st6 == admin_password:
admin = True
uart_write2('Verification passed!','Please place the card!')
do_read2(data_id_st4)
return
def mima_zuce():
temp_id3 = ''
temp_mima3 = ''
while True:
if uart2.any():
user_id = ''
password = ''
rx2 = []
rx_num = 0
# data_end = 0
bin_data = uart2.read(40)
uart2.sendbreak()
rx1 = list(bin_data)
for item in rx1:
rx2.append(chr(item))
rx_num += 1
# if (rx2[rx_num] == 'T') and (rx2[rx_num-1] == 'E') and (rx2[rx_num-2] == '>'):
# break
data_end = rx_num-5
data_id_st = rx2[8:13:1]
data_id_st2 = ''.join(data_id_st)
print(data_id_st2)
if rx1[3:5:1] == button_cmd:
data_name_len = rx1[6] - 1
data_name = rx2[7:data_name_len+7:1]
data_name2 = ''.join(data_name)
print(data_name2)
if data_name2 == 'back2':
return
if data_id_st2 == 'edit3':
data_id_st3 = rx2[15:data_end:1]
data_id_st4 = ''.join(data_id_st3)
print(data_id_st4)
user_id_flag = True
temp_id3 = data_id_st4
# personnel_ps[temp_id] = raw_uid[0:4:1]
elif data_id_st2 == 'edit4':
data_id_st5 = rx2[15:data_end:1]
data_id_st6 = ''.join(data_id_st5)
print(data_id_st6)
# if personnel_ps.get(temp_id) == data_id_st6:
password_flag = True
temp_mima3 = data_id_st6
# personnel_ps[temp_id] = password_flag
# print(rx2,user_id_flag,password_flag)
elif data_id_st2 == 'edit7':
data_id_st5 = rx2[15:data_end:1]
data_id_st6 = ''.join(data_id_st5)
if (data_id_st6 == admin_password) and (password_flag == True) and (user_id_flag == True):
admin = True
personnel_ps[temp_id3] = temp_mima3
password_flag = False
user_id_flag = False
uart_write4('Verification passed!','login was successful!')
def password_loin():
temp_id2 = ''
temp_mima = ''
while True:
if uart2.any():
user_id = ''
password = ''
rx2 = []
rx_num = 0
# data_end = 0
bin_data = uart2.read(40)
uart2.sendbreak()
rx1 = list(bin_data)
for item in rx1:
rx2.append(chr(item))
rx_num += 1
# if (rx2[rx_num] == 'T') and (rx2[rx_num-1] == 'E') and (rx2[rx_num-2] == '>'):
# break
data_end = rx_num-5
data_id_st = rx2[8:13:1]
data_id_st2 = ''.join(data_id_st)
print(data_id_st2)
if rx1[3:5:1] == button_cmd:
data_name_len = rx1[6] - 1
data_name = rx2[7:data_name_len+7:1]
data_name2 = ''.join(data_name)
print(data_name2)
if data_name2 == 'back4':
return
if data_id_st2 == 'edit5':
data_id_st3 = rx2[15:data_end:1]
data_id_st4 = ''.join(data_id_st3)
print(data_id_st4)
if data_id_st4 in personnel_ps:
user_id_flag = True
temp_id2 = data_id_st4
elif data_id_st2 == 'edit6':
data_id_st5 = rx2[15:data_end:1]
data_id_st6 = ''.join(data_id_st5)
print(data_id_st6)
print(temp_id2)
print(personnel_ps)
if personnel_ps.get(temp_id2) == data_id_st6:
password_flag = True
# print(rx2,user_id_flag,password_flag)
print(user_id_flag,password_flag)
if (password_flag == True) and (user_id_flag == True):
uart_write(temp_id2,temp_id2)
password_flag = False
user_id_flag = False
suos.value(1)
uart2.write('ST<{"cmd_code":"set_visible","type":"widget","widget":"lock2","visible":true}>ET')
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"edit5","text":"''"}>ET')
uart2.write('ST<{"cmd_code":"set_text","type":"label","widget":"edit6","text":"''"}>ET')
time.sleep(3)
# uart_write('student','')
suos.value(0)
uart2.write('ST<{"cmd_code":"set_visible","type":"widget","widget":"lock2","visible":false}>ET')
uart2.sendbreak()
while True:
if uart2.any()>1:
rx2 = []
data_name2 = ''
bin_data = uart2.read(40)
# time.sleep(1)
uart2.sendbreak()
# time.sleep(1)
rx1 = list(bin_data)
for item in rx1:
rx2.append(chr(item))
print(rx2)
if rx1[3:5:1] == button_cmd:
data_name_len = rx1[6] - 1
data_name = rx2[7:data_name_len+7:1]
data_name2 = ''.join(data_name)
print(data_name2)
if data_name2 == 'card1':
card_zhuce()
elif data_name2 == 'password1':
mima_zuce()
elif data_name2 == 'card2':
do_read()
elif data_name2 == 'password2':
password_loin()
видеодемонстрация
В программе куча ошибок:
1) В строках №3 и №4 в конце вместо точек должны стоять точки с запятой
2) В строке №4 вместо decode_results result; необходимо написать decode_results results;
3) Нужно добавить в программу функцию void setup() {}
4) В строке №5 перед именем функции blank_set() нужно поставить слово voidКак-то так...
Это мой ручной набор текста, который будет содержать некоторые пунктуационные ошибки, фактический код свободен от этих проблем.
Я нашел решение, установите библиотеку IRremoto с более низкой версией, например 2.7.0
Ви про паяльник щось чули? Чи тільки про DuPont?
Я новичок в электронике и никогда раньше не паял. Я буду учиться паять.
ІЧ -прийом показує, що декодування (& результати)) функція застаріла і може працювати не так, як очікувалося! Просто використовуйте decode () без будь -яких аргументів.
#include <IRremote.h> // Декларація бібліотеки IRremote
int RECV_PIN = 11; // Визначте штифт ІЧ -приймача як 11
IRrecv irrecv(RECV_PIN).
decode_results result.
blank_set()
{
Serial.begin(9600);
irrecv.enableIRIn(); // запустити приймач
}
void loop() {
if(irrecv.decode(&results))
{
Serial.println(results.value, HEX); // вивести отриманий код у шістнадцятковому рядку
irrecv.resume(); // Отримайте наступне значення
}
delay(100);
}
Чи може цей дисплей спілкуватися з Arduino?
Я не бачу, де він може використовувати дріт DuPont.
Сторінки 1