Jump to content

Ardelle Froeliger

Members
  • Posts

    23
  • Joined

  • Last visited

Posts posted by Ardelle Froeliger

  1. Arduino Uno Project Introduction
    Due to my personal interest, I have been exposed to the development of the Arduino UNO and STONE LCD module project for two weeks and found that Arduino is very simple, convenient, and practical. So I want to do a simple Demo with Arduino. I have an MFRC522 module at home, which I used when I was in college, but used STM32 to communicate with the MFRC522 module at that time, so I need to write the driver of the MFRC522 module by myself, which is quite complicated.
    Arduino has its own MFRC522 library file, so I don’t have to write the driver file myself. This will be very convenient to use.

    Arduino Uno Connection STONE LCD
    I need to make a Demo that can read MI card data and display the read data to the STONE LCD screen.
    According to this requirement, I need the following materials:

    Arduino development board
    MFRC522 module
    LCD display
    The MI card
    STONE LCD Module Connect Arduino UNO Project Hardware
    There are 3 electronic modules in the project, which I will introduce one by one.

    TFT LCD Display Module ( STONE STVC050WT-01)
    In this project, I intend to use the STONE STVC050WT-01 display screen module to display the card data read by MFRC522.

    The driver chip has been integrated inside the display screen, and there is development software that can be used by users. Users only need to add buttons and text boxes to the designed UI pictures through the pc, and then generate configuration files and download them into the display module.

    The STVC050WT-01 communicates with the MCU via a UART-TTL signal.

    STONE LCD Development Steps
    Three steps of STONE display screen development:

    Design the display logic and button logic with STONE TOOL software, and download the design file to the display module.
    MCU communicates with the STONE LCD display module through the serial port.
    With the data obtained in step 2, the MCU does other actions.
    STONE TOOLBox (GUI Design Software)
    Download the latest version of the STONE TOOL software (currently TOOL2019) from the website, and install it.
    After the software is installed, the following interface will be opened:How-to-Display-data-read-by-MFRC522-through-LCD-with-Arduino
    Click the “File” button in the upper left corner to create a new project, which we will discuss later.
    MFRC522
    How-to-Display-data-read-by-MFRC522-through-LCD-with-Arduino

    MFRC522 is a low-voltage, low-cost, small contactless read-write card chip launched by NXP, which is the choice for the development of smart meters and portable handheld devices.

    Using advanced modulation and demodulation concepts, MFRC522 fully integrates all types of passive contactless communication modes and protocols at 13.56MHz. Support the multi-layer application of ISO14443A. The internal transmitter section drives the reader antenna to communicate with the ISO14443A/MIFARE card and transponder without the need for additional circuits. The receiver section provides robust and efficient demodulation and decoding circuits for processing ISO14443A compliant transponder signals. The digital part handles ISO14443A frames and error detection (parity & CRC). MFRC522 supports MIFARE higher speed contactless communication, with a two-way data transmission rate up to 424kbit/s omch.

    MFRC522 Module Features
    High integration modulation and demodulation circuit;
    Support ISO/IEC 14443 TypeA and MIFARE Communication protocol;
    The communication distance with ISO 14443A/MIFARE in reader mode is up to 50mm, depending on the length of the antenna.
    Supports higher transmission rates of ISO 14443 212kbit/s and 424kbit/s.
    SPI interface for 10Mbit/s
    64 byte send and receive FIFO buffer;
    Built-in temperature sensor to automatically stop RF emission when the chip temperature is too high;
    Adopt an independent multi-group power supply to avoid interference between modules and improve work stability.
    CRC and parity check function.
    Internal oscillator connected to 27.12mhz crystal;
    2.5-3.3v low voltage and low power consumption design;
    Operating temperature range: -30 ~ +85℃;
    Super small size 5mm×5mm×0.85mm.
    MFRC522 Module Application
    MFRC522 is suitable for a variety of applications based on ISO/IEC 14443A and requires a low cost, small size, high performance, and single power contactless communication.

    Public transport terminal
    Portable handheld device
    Contactless public telephone
    Door lock
    Arduino UNO
    How-to-Display-data-read-by-MFRC522-through-LCD-with-Arduino

    Developers do not need to care about the tedious details of single-chip programming, providing you with an easy to use kit. Arduino UNO also simplifies the work process of microcontroller, but compared with other systems, Arduino is more advantageous in many places, especially suitable for teachers, students, and amateurs:

    Cheap — Arduino boards are really cheap compared to other platforms. The cheapest version of Arduino UNO can be made with your own hands, and even an assembled product costs no more than $30.
    Simple programming environment — Arduino programming environment is easy for beginners to learn to use, and it can provide enough advanced applications for advanced users.
    Software is open source and extensible – Arduino software is open source and can be extended by experienced programmers. The Arduino programming language can be extended through the C++ library,
    Open source and extensible hardware — Arduino board is based on ATMEGA8 and atmega168/328 microcontroller of Atmel. Arduino is based on the Creative Commons license, so experienced circuit designers can design their own modules to extend or improve on the requirements. Even for some relatively inexperienced users, you can make test boards understand how Arduino works, which saves money and time.
    Arduino, based on the AVR platform, compiles and encapsulates AVR libraries twice. Ports are packaged, and registers, address Pointers, and other things are not needed. Greatly reduce the difficulty of software development, suitable for non-professional enthusiasts to use.

    Arduino UNO Development Environment
    Arduino IDE is very easy for beginners to learn and has plenty of flexibility. Arduino language is developed based on wiring language, which is the second packaging of the Avr-GCC library. It does not need too much foundation of SCM or programming, so you can develop it quickly after simple learning.
    The Arduino development environment is the Arduino IDE, which can be downloaded from the Internet.
    After installing the Arduino IDE, the following interface will appear when you open the software:

    How-to-Display-data-read-by-MFRC522-through-LCD-with-Arduino
    The Arduino IDE creates two functions by default: the setup function and the loop function.
    There are a lot of Arduino introductions on the Internet. If you don’t understand, you can go to the Internet to look up materials.

    Arduino LCD Project Implementation Process
    Hardware Connection
    To ensure that the next step in writing code goes smoothly, we must first determine the reliability of the hardware connection.
    Only three pieces of hardware were used in this project:How-to-Display-data-read-by-MFRC522-through-LCD-with-Arduino

    Arduino UNO development board
    STONE STVC050WT-01 TFT-LCD displayer
    MFRC522 module
    Arduino UNO development board and STVC050WT-01 TFT-LCD display screen are connected through UART, and the Arduino UNO development board is connected with the MFRC522 module through SPI interface. After thinking clearly, we can draw the following wiring picture:

    How-to-Display-data-read-by-MFRC522-through-LCD-with-Arduino
    The specific pin connection is as follows:

    How-to-Display-data-read-by-MFRC522-through-LCD-with-Arduino
    Make sure there are no errors in the hardware connection and proceed to the next step.

    TFT LCD User Interface Design
    First of all, we need to design a picture, which can be designed by PhotoShop or other image design tools. After designing the picture, save the picture in JPG format.
    Open the software STONE TOOL and create a new project:

    How-to-Display-data-read-by-MFRC522-through-LCD-with-Arduino

    How-to-Display-data-read-by-MFRC522-through-LCD-with-Arduino
    Remove the image that was loaded by default in the new project, and add the UI image that we designed.
    Add the text display component, design the display digit and decimal point, get the storage location of the text display component in the display screen.
    The effect is as follows:

    How-to-Display-data-read-by-MFRC522-through-LCD-with-Arduino

    STONE UI Interface Generate A Configuration File
    Once the UI design is complete, the configuration file can be generated and downloaded to the STVC050WT-01 display, which is described in STONE’s development materials.
    First, perform step 1, then insert the USB flash drive into the computer, and the disk symbol will be displayed. Then click “Download to u-disk” to Download the configuration file onto the USB flash drive, and then insert the USB flash drive into STVC050WT-01 to complete the upgrade.

    MFRC522 Module
    We don’t need to program the MFRC522 module. We just need to make sure that the hardware is connected reliably.

    Arduino Library File With Completion Code
    Open the Arduino IDE and find the following buttons:

    How-to-Display-data-read-by-MFRC522-through-LCD-with-Arduino
    Search “RC522” to find the RC522 library file, then click download and install.
    You can also download it directly from the Internet:
    https://github.com/miguelbalboa/rfid
    After the installation, you can find the Demo of MFRC522 in the LIB library folder of Arduino:


    Double-click the file to open it.

    This Demo can be directly tested. After compiling and downloading the code into the Arduino development board, the data of MFRC522 can be seen in the serial debugging tool if there are not any problems with the hardware connection.
    The complete code is as follows:

    /*
    * --------------------------------------------------------------------------------------------------------------------
    * Example sketch/program showing how to read new NUID from a PICC to serial.
    * --------------------------------------------------------------------------------------------------------------------
    * This is an MFRC522 library example; for further details and other examples see: https://github.com/miguelbalboa/rfid
    *
    * Example sketch/program showing how to the read data from a PICC (that is: an RFID Tag or Card) using an MFRC522 based RFID
    * Reader on the Arduino SPI interface.
    *
    * When the Arduino and the MFRC522 module are connected (see the pin layout below), load this sketch into Arduino IDE
    * then verify/compile and upload it. To see the output: use Tools, Serial Monitor of the IDE (hit Ctrl+Shft+M). When
    * you present a PICC (that is: an RFID Tag or Card) at reading distance of the MFRC522 Reader/PCD, the serial output
    * will show the type, and the NUID if a new card has been detected. Note: you may see "Timeout in communication" messages
    * When removing the PICC from reading distance too early

  2. Code

    Spoiler


    
    from machine import UART,Pin
    
    from time import sleep
    
    import _thread
    
    import rp2
    
    from array import array
    
    import ascii_ku
    
    import speed_motor
    
    from os import uname
    
    #import sys
    
    uart1 = UART(0, baudrate = 115200, tx =Pin(0), rx = Pin(1))
    
    floor1 = ['f', 'l', 'o', 'o', 'r','1']
    
    floor2 = ['f', 'l', 'o', 'o', 'r','2']
    
    floor3 = ['f', 'l', 'o', 'o', 'r','3']
    
    button_cmd = [16,1]
    
    selector_cmd = [16,129]
    
     
    
    print(uname()[0])
    
    delaytime = 0.0000001 # Printer clock delay
    
     
    
    coin = Pin(22, Pin.IN,Pin.PULL_UP)
    
    coin_num = 0
    
     
    
    motor = speed_motor.motor_control(2, 3, 4, 5) # Initialize the printer's internal stepper motor pins, corresponding to the a+/a-/b+/b- of the stepper motor
    
    mov_bit = 0
    
     
    
    PRINTER_DIN = Pin(20, Pin.OUT)
    
    PRINTER_CLK = Pin(19, Pin.OUT)
    
    PRINTER_LAT = Pin(18, Pin.OUT, Pin.PULL_UP)
    
     
    
    STB1 = Pin(6, Pin.OUT, Pin.PULL_DOWN)
    
    STB2 = Pin(7, Pin.OUT, Pin.PULL_DOWN)
    
    STB3 = Pin(8, Pin.OUT, Pin.PULL_DOWN)
    
    STB4 = Pin(9, Pin.OUT, Pin.PULL_DOWN)
    
    STB5 = Pin(14, Pin.OUT, Pin.PULL_DOWN)
    
    STB6 = Pin(15, Pin.OUT, Pin.PULL_DOWN)
    
     
    
    lock = _thread.allocate_lock()
    
     
    
    ascii_code = ascii_ku.ascii_code() # Importing an ascii character library
    
     
    
    # shuru = 'aa'
    
    # line_word = []
    
    # for item in range(len(shuru)):
    
    #     line_word.append(shuru[item])
    
    # line_num = len(shuru)
    
    # bottom_line_num = len(shuru)%
    
    # global motor_speed = 0
    
    # global line = 0
    
     
    
    # if len(shuru) > 6:
    
    #     motor_speed = len(shuru) % 6
    
    #     if (len(shuru) % 6) == 0:
    
    #         motor_speed = 12
    
    # else:
    
    #     motor_speed = len(shuru)
    
    # # print(motor_speed)
    
    #
    
    # line = (len(shuru) // 12) + 1
    
    # if (len(shuru) % 12) == 0:
    
    #     line -= 1
    
    lins = 0
    
    supper = 0
    
    slower = 0
    
     
    
    danjia = 0
    
    # _thread.start_new_thread(motor.run_stop, (0.005*motor_speed, 26*line))
    
    # _thread.start_new_thread(motor.run_stop, (motor_speed, line))
    
    # _thread.start_new_thread(motor.run_stop, (0.03, 56))
    
    def pay(pay):
    
        global coin_num
    
        line_word = {'line_word1':['s','i','t','e',':','F','1','-','0'],'line_word2':['0','d','a','y','2','h','o','u','r'],'line_word3':['t','o','t','a','l',':','4','.','0'],'line_word4':['T','o','t','a','l',':','4','.','0']}
    
        line_wors = {'line_word1':['U','n','i','t',':','2','.','0','0'],'line_word2':['T','o','t','a','l',':','4','.','0'],
    
                     'line_word3':['U','n','i','t',':','2','.','0','0'],'line_word4':['T','o','t','a','l',':','5','.','0']}
    
    #     line_word1 = ['S','i','t','e',':','F','1','-','0']
    
    #     line_word2 = ['1','D','a','y','1','H','o','u','r']
    
    #     line_word3 = ['U','n','i','t',':','2','.','0','0']
    
    #     line_word4 = ['T','o','t','a','l',':','5','.','0']
    
    #     line_word1[8]=str(pay[0])
    
    #     line_word2[0]=str(pay[1])
    
    #     line_word2[4]=str(pay[2])
    
    #     line_word4[6]=str(pay[3])
    
        (line_word['line_word1'])[8]=str(pay[0])
    
    #     (line_word['line_word2'])[0]=str(pay[1])
    
    #     (line_word['line_word2'])[4]=str(pay[2])
    
    #     (line_word['line_word4'])[6]=str(pay[3])
    
        sleep(1)
    
        uart1.write('ST<{"cmd_code":"set_value","type":"image_value","widget":"image_value4","value":'+str(pay[3])+'}>ET')
    
    #     sleep(2)
    
    #     print(line_word.get('line_word'+str(1))[0])
    
    #     print('zfdszfz',line_word)
    
    #     sleep(2)
    
    #     uart1.write('ST<{"cmd_code":"set_text","type":"edit","widget":"message5","text":"F1 - '+pay[0]+'"}>ET')
    
    #     uart1.sendbreak()
    
    #     sleep(1)
    
    #     uart1.write('ST<{"cmd_code":"set_text","type":"edit","widget":"message6","text":"'+str(pay[1])+'"}>ET')
    
    #     uart1.sendbreak()
    
    #     sleep(1)
    
    # #     uart1.write('ST<{"cmd_code":"set_text","type":"edit","widget":"message22","text":"'+str(pay[2])+'"}>ET')
    
    #     uart1.write('ST<{"cmd_code":"set_text","type":"edit","widget":"message8","text":"'+str(pay[3])+'"}>ET')
    
        while True:
    
            if coin.value()==0:
    
                coin_num += 1
    
                print("Number of coins deposited:",coin_num)
    
                sleep(0.1)
    
                uart1.write('ST<{"cmd_code":"set_value","type":"image_value","widget":"image_value2","value":'+str(coin_num)+'}>ET')
    
                if coin_num == pay[3]:
    
                    uart1.write('ST<{"cmd_code":"set_visible","type":"widget","widget":"image37","visible":true}>ET')
    
                    
    
                    
    
            if uart1.any()>1:
    
                rx2 = []
    
                data_name2 = ''
    
                bin_data = uart1.read(40)
    
                uart1.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+6:1]
    
                    data_name2 = ''.join(data_name)
    
                    print(data_name2)
    
                    if data_name2 == 'back':
    
                        break
    
                    elif data_name2 == 'print' and coin_num == pay[3] and rx1[13] == 2:
    
                        data_name2=''
    
                        _thread.start_new_thread(motor.run_stop, (9, 4))
    
                        for iii in range(1,3):
    
                            for linss in range(32):
    
                                supper=slower=0
    
                                for lins in range(9):
    
    #                                 temp_list=ascii_code.code.get(('line_word'+str(iii))[lins])
    
    #                                 print(temp_list,type(temp_list))
    
                                    if (line_word.get('line_word'+str(iii))[lins]).islower():
    
                                        word_size24 (ascii_code.code.get(line_word.get('line_word'+str(iii))[lins]), linss%32, lins%12, supper, slower)
    
                                        slower += 1
    
                                    else:
    
                                        last_word_size32 (ascii_code.code.get(line_word.get('line_word'+str(iii))[lins]), linss%32, lins%12, supper, slower)
    
                                        supper += 1
    
                        
    
                            sleep(6)
    
    #                     for iii in range(1,2):
    
    #                         for linss in range(32):
    
    #                             supper=slower=0
    
    #                             for lins in range(9):
    
    # #                                 temp_list=ascii_code.code.get(('line_word'+str(iii))[lins])
    
    # #                                 print(temp_list,type(temp_list))
    
    #                                 if (line_wors.get('line_word'+str(iii))[lins]).islower():
    
    #                                     word_size24 (ascii_code.code.get(line_wors.get('line_word'+str(iii))[lins]), linss%32, lins%12, supper, slower)
    
    #                                     slower += 1
    
    #                                 else:
    
    #                                     last_word_size32 (ascii_code.code.get(line_wors.get('line_word'+str(iii))[lins]), linss%32, lins%12, supper, slower)
    
    #                                     supper += 1
    
    #                     sleep(6)
    
    #                     for iii in range(1,2):
    
    #                         for linss in range(32):
    
    #                             supper=slower=0
    
    #                             for lins in range(9):
    
    # #                                 temp_list=ascii_code.code.get(('line_word'+str(iii))[lins])
    
    # #                                 print(temp_list,type(temp_list))
    
    #                                 if (line_wors.get('line_word'+str(iii))[lins]).islower():
    
    #                                     word_size24 (ascii_code.code.get(line_wors.get('line_word'+str(iii))[lins]), linss%32, lins%12, supper, slower)
    
    #                                     slower += 1
    
    #                                 else:
    
    #                                     last_word_size32 (ascii_code.code.get(line_wors.get('line_word'+str(iii))[lins]), linss%32, lins%12, supper, slower)
    
    #                                     supper += 1
    
    def floor1def():
    
        day_jia = 0
    
        hour_jia = 0
    
        day_flag = False
    
        hour_flag = False
    
        price_flag = False
    
        posltion = False
    
        zongjia = 0
    
        pay1 = [0,0,0,0]
    
     
    
        print("floor1 now")
    
    #     uart1.write('ST<{"cmd_code":"set_text","type":"edit","widget":"message3","text":"2.00$/H"}>ET')
    
        uart1.sendbreak()
    
        while True:
    
            if uart1.any()>1:
    
                rx2 = []
    
                data_name2 = ''
    
                bin_data = uart1.read(40)
    
                uart1.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+6:1]
    
                    data_name2 = ''.join(data_name)
    
                    print(data_name2)
    
                    if data_name2 == 'back':
    
                        break
    
                    elif data_name2 == 'position':
    
                        posltion = True
    
                        pay1[0]=rx2[15]
    
                        write1(rx2[15])
    
                    elif data_name2 == 'pay' and posltion and price_flag:
    
                        uart1.write('ST<{"cmd_code":"open_win","type":"window","widget":"window7"}>ET')
    
                        pay(pay1)
    
    #                 if data_name2 == 'pay' and posltion = True and (day_flag or hour_flag):
    
    #                     posltion = True
    
    #                     uart1.write('ST<{"cmd_code":"open_win","type":"window","widget":"window7"}>ET')
    
                if rx1[3:5:1] == selector_cmd:
    
                    data_name_len = rx1[6] - 4
    
                    data_name = rx2[7:data_name_len+7:1]
    
                    data_name2 = ''.join(data_name)
    
                    print(data_name2)
    
                    if data_name2 == 'time_day1':
    
                        pay1[1]=rx2[19]
    
                        write2(ord(rx2[19]))
    
                        day_jia = ord(rx2[19])
    
                        day_flag = True
    
                    elif data_name2 == 'time_hour1':
    
                        pay1[2]=rx2[20]
    
                        write3(ord(rx2[20]))
    
                        hour_jia = ord(rx2[20])
    
                        hour_flag = True
    
                if hour_flag or day_flag:
    
                    price_flag = True
    
                    zongjia = (day_jia*48) + (hour_jia*2)
    
                    pay1[3]=zongjia
    
                    print(str(zongjia))
    
                    uart1.write('ST<{"cmd_code":"set_text","type":"edit","widget":"message4","text":"'+str(zongjia)+'"}>ET')
    
                    hour_flag = day_flag = False
    
     
    
    def floor2def():
    
        pass
    
     
    
    def floor3def():
    
        pass
    
     
    
    def write1(num):
    
        #print(ss)
    
        for item in range(49,55):
    
            uart1.write('ST<{"cmd_code":"set_image","type":"image","widget":"image1_'+chr(item)+'","image":"nocar_bg"}>ET')
    
        uart1.write('ST<{"cmd_code":"set_image","type":"image","widget":"image1_'+num+'","image":"selectedcar_bg2"}>ET')
    
        uart1.write('ST<{"cmd_code":"set_text","type":"edit","widget":"message1","text":"F1 - '+num+'"}>ET')
    
        
    
    def write2(num):
    
    #     danjia = 1
    
        uart1.write('ST<{"cmd_code":"set_text","type":"edit","widget":"message2","text":"'+str(num)+'"}>ET')
    
    #     if danjia == 1:
    
    #         uart1.write('ST<{"cmd_code":"set_text","type":"edit","widget":"message3","text":"2.00$/H"}>ET')
    
     
    
    def write3(num):
    
    #     danjia = 1
    
        uart1.write('ST<{"cmd_code":"set_text","type":"edit","widget":"message22","text":"'+str(num)+'"}>ET')
    
    #     if danjia == 1:
    
    #         uart1.write('ST<{"cmd_code":"set_text","type":"edit","widget":"message3","text":"2.00$/H"}>ET')
    
     
    
     
    
     
    
    def last_word_size32 (word_line, linss, lins, supper, slower):
    
        for mov_bit in range((supper*32)+(slower*24)):
    
            PRINTER_CLK.value(0)
    
            sleep(delaytime)
    
            PRINTER_DIN.value(0)
    
            PRINTER_CLK.value(1)
    
            sleep(delaytime)
    
        for mov_bit in range(31, -1, -1):
    
            word_bit = (word_line[linss] >> mov_bit)&0b00000000000000000000000000000001
    
            PRINTER_CLK.value(0)
    
            sleep(delaytime)
    
            PRINTER_DIN.value(word_bit)
    
            PRINTER_CLK.value(1)
    
            sleep(delaytime)
    
        for mov_bit in range(352-((supper*32)+(slower*24))):
    
            PRINTER_CLK.value(0)
    
            sleep(delaytime)
    
            PRINTER_DIN.value(0)
    
            PRINTER_CLK.value(1)
    
            sleep(delaytime)
    
        if (supper*32)+(slower*24) < 192:
    
            PRINTER_LAT.value(0)
    
            STB1.value(1)
    
            STB2.value(1)
    
            STB3.value(1)
    
            STB4.value(1)
    
            sleep(0.005)
    
            STB1.value(0)
    
            STB2.value(0)
    
            STB3.value(0)
    
            STB4.value(0)
    
            PRINTER_LAT.value(1)
    
        else:
    
            PRINTER_LAT.value(0)
    
            STB4.value(1)
    
            STB5.value(1)
    
            STB6.value(1)
    
            sleep(0.005)
    
            STB4.value(0)
    
            STB5.value(0)
    
            STB6.value(0)
    
            PRINTER_LAT.value(1)
    
    #         PRINTER_LAT.value(0)
    
    #         STB1.value(1)
    
    #         STB2.value(1)
    
    #         STB3.value(1)
    
    #         STB4.value(1)
    
    #         STB5.value(1)
    
    #         STB6.value(1)
    
    #         sleep(0.005)
    
    #         STB1.value(0)
    
    #         STB2.value(0)
    
    #         STB3.value(0)
    
    #         STB4.value(0)
    
    #         STB5.value(0)
    
    #         STB6.value(0)
    
    #         PRINTER_LAT.value(1)
    
            
    
    def word_size24 (word_line, linss, lins, supper, slower):
    
        for mov_bit in range((supper*32)+(slower*24)):
    
            PRINTER_CLK.value(0)
    
            sleep(delaytime)
    
            PRINTER_DIN.value(0)
    
            PRINTER_CLK.value(1)
    
            sleep(delaytime)
    
        for mov_bit in range(23, -1, -1):
    
            word_bit = (word_line[linss] >> mov_bit)&0b000000000000000000000001
    
            PRINTER_CLK.value(0)
    
            sleep(delaytime)
    
            PRINTER_DIN.value(word_bit)
    
            PRINTER_CLK.value(1)
    
            sleep(delaytime)
    
        for mov_bit in range(360-((supper*32)+(slower*24))):
    
            PRINTER_CLK.value(0)
    
            sleep(delaytime)
    
            PRINTER_DIN.value(0)
    
            PRINTER_CLK.value(1)
    
            sleep(delaytime)
    
        if (supper*32)+(slower*24) < 192:
    
            PRINTER_LAT.value(0)
    
            STB1.value(1)
    
            STB2.value(1)
    
            STB3.value(1)
    
            sleep(0.005)
    
            STB1.value(0)
    
            STB2.value(0)
    
            STB3.value(0)
    
            PRINTER_LAT.value(1)
    
        else:
    
            PRINTER_LAT.value(0)
    
            STB4.value(1)
    
            STB5.value(1)
    
            STB6.value(1)
    
            sleep(0.005)
    
            STB4.value(0)
    
            STB5.value(0)
    
            STB6.value(0)
    
            PRINTER_LAT.value(1)
    
    #         PRINTER_LAT.value(0)
    
    #         STB1.value(1)
    
    #         STB2.value(1)
    
    #         STB3.value(1)
    
    #         STB4.value(1)
    
    #         STB5.value(1)
    
    #         STB6.value(1)
    
    #         sleep(0.005)
    
    #         STB1.value(0)
    
    #         STB2.value(0)
    
    #         STB3.value(0)
    
    #         STB4.value(0)
    
    #         STB5.value(0)
    
    #         STB6.value(0)
    
    #         PRINTER_LAT.value(1)
    
     
    
    while True:
    
        if uart1.any()>1:
    
            rx2 = []
    
            data_name2 = ''
    
            bin_data = uart1.read(40)
    
            uart1.sendbreak()
    
            rx1 = list(bin_data)
    
            for item in rx1:
    
                rx2.append(chr(item))
    
            print(rx2)
    
            if rx2[7:13:1] == floor1:
    
                floor1def()
    
            elif rx2[7:13:1] == floor2:
    
                floor2def()
    
            elif rx2[7:13:1] == floor3:
    
                floor3def()
    
     
    
    for linss in range(32):
    
        supper=slower=0
    
        if linss < 32:
    
            for lins in range(len(line_word)):
    
    #             if lins//12:
    
    #                 break
    
                if (line_word[lins].isupper() or line_word[lins].isdigit() or line_word[lins].isspace()):
    
                    last_word_size32 (ascii_code.code.get(line_word[lins]), linss%32, lins%12, supper, slower)
    
                    supper += 1
    
                elif (line_word[lins].islower()):
    
                    word_size24 (ascii_code.code.get(line_word[lins]), linss%32, lins%12, supper, slower)
    
                    slower += 1
    
        else:
    
            if linss == 32:
    
                sleep(5.8)
    
            for lins in range(motor_speed):
    
                if (line_word[lins].isupper()):
    
                    last_word_size32 (ascii_code.code.get(line_word[12]), linss%32, lins%12, len(line_word))
    
    #     elif:
    
    #         _thread.start_new_thread(motor.run_stop, (motor_speed, line))
    
    #     for linss in range(32):
    
    #         for lins in range(len(line_word)):
    
    #             if (line_word[lins].isupper()):
    
    #                 last_word_size32 (ascii_code.code.get(line_word[lins]), linss, lins, len(line_word))
    
     
    
    line_word.clear()

     


     

    The video demo

     

  3. Materials to be used

    1、STONE STWI101WT-01

    2、FTP thermal printer head

    3、Raspberry Pi pico

    4、Coin-operated machine

    Function

    The control function is displayed on the serial screen, the main interface selects the floor, after entering the main interface selects the parking space, at the same time it will display the parking space number in the text box on the top right, then selects the stay time, it is two scrolling text selectors, then also the same will display the order information in the text box on the top right, according to the fixed unit price which multiplies with the stay time to get the total price. Then only when the parking space and the stay time are selected, you can go to the payment button, otherwise it is invalid. After entering the payment screen, a coin acceptor will be used. Then the screen will show the number of coins to be put in and the number of coins already put in. After the coins have been put in, a payment success message will be displayed. Then you can choose to print a small ticket to print the place number and time on the thermal paper.

    Circuit

    I have design a circuit by myself in order to drive many components, and the overall circuit diagram is like this, the upper left corner is the communication socket and power supply socket, below there is a buzzer (not actually used in the circuit), there is a light-emitting diode on the right, and the lower right corner is a 30pin fpc for connecting the print head.

    parking-management-system(6).jpg.3810e6049e48d11ccf029ffc6524094d.jpg

  4. I use Xilinx Spartan3E chip to design a SDRAM data storage module, I put the global clock through ODDR2 to output a clock to the SDRAM for data reading, writing and sampling, but I found that I output this clock 80M when the voltage swing is only 500mV, the higher the frequency, the smaller the voltage swing. And I want to push the SDRAM clock to 140M, how to solve this problem?

    FPGA operating conditions: BANK voltage: 3.3V

  5. Brief introduction

    Some time ago, I found a heart rate sensor module MAX30100. This module can collect blood oxygen and heart rate data of users, which is also simple and convenient to use.

    According to the data, I found that there are libraries of MAX30100 in the Arduino library files. That is to say, if I use the communication between Arduino and MAX30100, I can directly call the Arduino library files without having to rewrite the driver files. This is a good thing, so I bought the module of MAX30100.

    I decided to use Arduino to verify the heart rate and blood oxygen collection function of MAX30100. With STONE TFT LCD for monitoring blood pressure.

    Then the basic electronic materials are determined as follows

    1. Arduino Mini Pro development board

    2. MAX30100 heart rate and blood oxygen sensor module

    3. STONE 7-inch LCD serial port display module

    4. MAX3232 module

    Connection

    2059402386_lcd-arduino-project(9).thumb.jpg.44f1ec290ee34bfefe213815d79b2305.jpg

    GUI design

    1971724342_lcd-arduino-project(12).thumb.jpg.ea9846cb6529eef62c077e77c1b453ba.jpg

    Part of code

    #include
    
    #include "MAX30100_PulseOximeter.h"
    
     
    
    #define REPORTING_PERIOD_MS 1000
    
     
    
    // PulseOximeter is the higher level interface to the sensor
    
    // it offers:
    
    // * beat detection reporting
    
    // * heart rate calculation
    
    // * SpO2 (oxidation level) calculation
    
    PulseOximeter pox;
    
     
    
    uint32_t tsLastReport = 0;
    
     
    
    // Callback (registered below) fired when a pulse is detected
    
    void onBeatDetected()
    
    {
    
    Serial.println("Beat!");
    
    }
    
     
    
    void setup()
    
    {
    
    Serial.begin(115200);
    
     
    
    Serial.print("Initializing pulse oximeter..");
    
     
    
    // Initialize the PulseOximeter instance
    
    // Failures are generally due to an improper I2C wiring, missing power supply
    
    // or wrong target chip
    
    if (!pox.begin()) {
    
    Serial.println("FAILED");
    
    for(;;);
    
    } else {
    
    Serial.println("SUCCESS");
    
    }
    
     
    
    // The default current for the IR LED is 50mA and it could be changed
    
    // by uncommenting the following line. Check MAX30100_Registers.h for all the
    
    // available options.
    
    // pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA);
    
     
    
    // Register a callback for the beat detection
    
    pox.setOnBeatDetectedCallback(onBeatDetected);
    
    }
    
     
    
    void loop()
    
    {
    
    // Make sure to call update as fast as possible
    
    pox.update();
    
     
    
    // Asynchronously dump heart rate and oxidation levels to the serial
    
    // For both, a value of 0 means "invalid"
    
    if (millis() - tsLastReport > REPORTING_PERIOD_MS) {
    
    Serial.print("Heart rate:");
    
    Serial.print(pox.getHeartRate());
    
    Serial.print("bpm / SpO2:");
    
    Serial.print(pox.getSpO2());
    
    Serial.println("%");
    
     
    
    tsLastReport = millis();
    
    }
    
    }

    Results demo

    1345900071_lcd-arduino-project(21).jpg.91b3026d467d8dd77e2cbe2307956ff1.jpg

    45147355_lcd-arduino-project(22).jpg.97cb16b007142a215923950b3765b9c3.jpg

  6. Required materials

    Realized function

    1. card registration.
    2. username and password registration.
    3. card swipe to unlock the electronic lock.
    4. User name and password to unlock the electronic lock.

    Connection diagram

    connection.thumb.jpg.26fb3c72d2392be9ac687116d093b118.jpg

    GUI design

    1853452494_GUIdesign.thumb.png.bff148367770be1b2c612a672f443cc9.png

    Code

    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"\x00\x53\x00\x54\x00\x4F\x00\x4E\x00\x45\x0a\x0b\x0c\x0d\x0e\x0f")
    						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()

    Video demo

     

  7. ~/kernel/linux-digilent$ make ARCH=arm CHK include/linux/version.h
    CHK include/generated/utsrelease.h
    make[1]: `include/generated/mach-types.h' is up to date.
    CC kernel/bounds.s
    cc1: error: unrecognized command line option ‘-mlittle-endian’
    cc1: error: unrecognized command line option ‘-mno-thumb-interwork’
    kernel/bounds.c:1:0: error: unknown ABI (aapcs-linux) for -mabi= switch
    kernel/bounds.c:1:0: error: bad value (armv5t) for -march= switch
    make[1]: *** [kernel/bounds.s] Error 1
    make: *** [prepare0] Error 2

     

  8. On 7/31/2021 at 12:42 AM, JColvin said:

    Hi @Ardelle Froeliger,

    Which TFT LCD are you referring to and which Digilent board are you thinking of?

    If the LCD screen accepts 3.3 V logic signals then in theory you should be able to use it with Digilent system boards, though you may need to do some individual wiring and use an external power supply.

    Thanks,
    JColvin

    I'm using Stone's TFT LCD, which I've used to connect to an Arduino UNO, so I assume it can be connected to a DIGILENT. I'm thinking about buying a Digilent product just haven't thought about which one I should buy yet. My LCD and Arduino are connected according to DIN-TX, DOUT-RX.

     

    I mainly want to do a project related to infrared and radar.

     

    QQ图片20210730110606.jpg

×
×
  • Create New...