1158|4

166

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

【得捷电子Follow me第4期】基础任务一(补充):ping通互联网站点 [复制链接]

 

本篇帖子是上一篇帖子【得捷电子Follow me第4期】基础任务的延续

5.ping通互联网站点

若使用开发板PING 到互联网网站的话,需要配置访问DNS服务器,具体介绍可以看这个视频:

3. W5100S/W5500+RP2040树莓派Pico MicroPython开发《DNS》_哔哩哔哩_bilibili

这里主要使用usocket.getaddrinfo 这个函数对DNS进行解析,

此函数在MICOpython中文WIKI的介绍如下:

体现在代码里为:
def dns_query(domain):
    ip = usocket.getaddrinfo(domain, 80,0, usocket.SOCK_STREAM)
    return ip[0][4][0]

在初始化之后进行调用dns_query函数可以得到服务器返回的IP地址,这里以百度为例:

ip = dns_query("www.baidu.com")
    print("IP address is %s"%(ip))

结合前面的代码,将返回的IP地址显示在屏幕上:

from machine import Pin,SPI,PWM

import usocket
import network
import framebuf
import time

BL = 13
DC = 8
RST = 12
MOSI = 11
SCK = 10
CS = 9

def w5x00_init():
    spi=SPI(0,2_000_000, mosi=Pin(19),miso=Pin(16),sck=Pin(18))
    nic = network.WIZNET5K(spi,Pin(17),Pin(20))
    nic.active(True)
    nic.ifconfig(('192.168.2.114','255.255.255.0','192.168.2.1','8.8.8.8'))
    print('IP address :', nic.ifconfig())
    while not nic.isconnected():
        time.sleep(1)
        print(nic.regs())

def dns_query(domain):
    ip = usocket.getaddrinfo(domain, 80,0, usocket.SOCK_STREAM)
    return ip[0][4][0]
    
class LCD_1inch14(framebuf.FrameBuffer):
    def __init__(self):
        self.width = 240
        self.height = 135
        
        self.cs = Pin(CS,Pin.OUT)
        self.rst = Pin(RST,Pin.OUT)
        
        self.cs(1)
        self.spi = SPI(1)
        self.spi = SPI(1,1000_000)
        self.spi = SPI(1,10000_000,polarity=0, phase=0,sck=Pin(SCK),mosi=Pin(MOSI),miso=None)
        self.dc = Pin(DC,Pin.OUT)
        self.dc(1)
        self.buffer = bytearray(self.height * self.width * 2)
        super().__init__(self.buffer, self.width, self.height, framebuf.RGB565)
        self.init_display()
        
        self.red   =   0x07E0
        self.green =   0x001f
        self.blue  =   0xf800
        self.white =   0xffff
        
    def write_cmd(self, cmd):
        self.cs(1)
        self.dc(0)
        self.cs(0)
        self.spi.write(bytearray([cmd]))
        self.cs(1)

    def write_data(self, buf):
        self.cs(1)
        self.dc(1)
        self.cs(0)
        self.spi.write(bytearray([buf]))
        self.cs(1)

    def init_display(self):
        """Initialize dispaly"""  
        self.rst(1)
        self.rst(0)
        self.rst(1)
        
        self.write_cmd(0x36)
        self.write_data(0x70)

        self.write_cmd(0x3A) 
        self.write_data(0x05)

        self.write_cmd(0xB2)
        self.write_data(0x0C)
        self.write_data(0x0C)
        self.write_data(0x00)
        self.write_data(0x33)
        self.write_data(0x33)

        self.write_cmd(0xB7)
        self.write_data(0x35) 

        self.write_cmd(0xBB)
        self.write_data(0x19)

        self.write_cmd(0xC0)
        self.write_data(0x2C)

        self.write_cmd(0xC2)
        self.write_data(0x01)

        self.write_cmd(0xC3)
        self.write_data(0x12)   

        self.write_cmd(0xC4)
        self.write_data(0x20)

        self.write_cmd(0xC6)
        self.write_data(0x0F) 

        self.write_cmd(0xD0)
        self.write_data(0xA4)
        self.write_data(0xA1)

        self.write_cmd(0xE0)
        self.write_data(0xD0)
        self.write_data(0x04)
        self.write_data(0x0D)
        self.write_data(0x11)
        self.write_data(0x13)
        self.write_data(0x2B)
        self.write_data(0x3F)
        self.write_data(0x54)
        self.write_data(0x4C)
        self.write_data(0x18)
        self.write_data(0x0D)
        self.write_data(0x0B)
        self.write_data(0x1F)
        self.write_data(0x23)

        self.write_cmd(0xE1)
        self.write_data(0xD0)
        self.write_data(0x04)
        self.write_data(0x0C)
        self.write_data(0x11)
        self.write_data(0x13)
        self.write_data(0x2C)
        self.write_data(0x3F)
        self.write_data(0x44)
        self.write_data(0x51)
        self.write_data(0x2F)
        self.write_data(0x1F)
        self.write_data(0x1F)
        self.write_data(0x20)
        self.write_data(0x23)
        
        self.write_cmd(0x21)

        self.write_cmd(0x11)

        self.write_cmd(0x29)

    def show(self):
        self.write_cmd(0x2A)
        self.write_data(0x00)
        self.write_data(0x28)
        self.write_data(0x01)
        self.write_data(0x17)
        
        self.write_cmd(0x2B)
        self.write_data(0x00)
        self.write_data(0x35)
        self.write_data(0x00)
        self.write_data(0xBB)
        
        self.write_cmd(0x2C)
        
        self.cs(1)
        self.dc(1)
        self.cs(0)
        self.spi.write(self.buffer)
        self.cs(1)
         
if __name__=='__main__':
    pwm = PWM(Pin(BL))
    pwm.freq(1000)
    pwm.duty_u16(32768)#max 65535

    LCD = LCD_1inch14()
    #color BRG
    LCD.fill(LCD.white)

    w5x00_init()
    ip = dns_query("www.baidu.com")
    print("IP address is %s"%(ip))
    
    LCD.text("Follow me NO.4",20,20,LCD.red)
    LCD.text("Basic Task 1:",20,40,LCD.green)
    LCD.text("IP address is %s"%(ip),20,60,LCD.red)
    LCD.text("by ee_jark",20,80,LCD.blue)
    LCD.show()
   
    time.sleep(1)
    LCD.fill(0xFFFF)

此时开发板的屏幕上显示如图画面:

 

最新回复

看明白了,text方法是写在父类framebuf.FrameBuffer中的   详情 回复 发表于 2024-2-6 12:44
点赞 关注
个人签名

没用比没有强

 
 

回复
举报

5

帖子

3

TA的资源

一粒金砂(中级)

沙发
 
看你代码中的LCD CLASS,里面似乎没有text和fill方法呀,是不是代码不全?

点评

我的理解是microPython应该包含了字库,text和fill方法已经在烧录的MPY固件当中了,不知道是否正确  详情 回复 发表于 2024-2-4 10:41
 
 
 

回复

166

帖子

1

TA的资源

一粒金砂(高级)

板凳
 
林太太 发表于 2024-2-3 23:02 看你代码中的LCD CLASS,里面似乎没有text和fill方法呀,是不是代码不全?

这个我也不太清楚,请您看下微雪屏幕的源代码,我的代码都是直接调用的其中的函数

该屏幕的资源:Pico LCD 1.14 - Waveshare Wiki

代码下载链接:https://files.waveshare.com/upload/2/28/Pico_code.7z

如果您知道是什么缘故的话也请劳烦回复,谢谢

点评

看明白了,text方法是写在父类framebuf.FrameBuffer中的  详情 回复 发表于 2024-2-6 12:44
个人签名

没用比没有强

 
 
 

回复

166

帖子

1

TA的资源

一粒金砂(高级)

4
 
林太太 发表于 2024-2-3 23:02 看你代码中的LCD CLASS,里面似乎没有text和fill方法呀,是不是代码不全?

我的理解是microPython应该包含了字库,text和fill方法已经在烧录的MPY固件当中了,不知道是否正确

个人签名

没用比没有强

 
 
 

回复

22

帖子

3

TA的资源

一粒金砂(中级)

5
 
电子烂人 发表于 2024-2-4 10:37 这个我也不太清楚,请您看下微雪屏幕的源代码,我的代码都是直接调用的其中的函数 该屏幕的资源:Pico ...

看明白了,text方法是写在父类framebuf.FrameBuffer中的

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表