僵大懒 发表于 2017-8-8 17:36:19

micropython支持中文啦!

中文支持包含一下几个方面
1. string类型的变量直接可用中文
比如
   a="中文"
   print(a)
2. 文件可以使用中文注释
比如
    #这个程序完成了XXXX功能
3. 网络资源获取到中文字符串的时候,可以直接打印
比如
    本例程会提供一个天气预报的例子,请看完全部教程
4. 可以通过Framebuf将汉字打印到液晶上
比如
    oled.text("愿Micropython越来越强大",0,0)



参考了 @秦皇岛岛主的例子,学习了一下http的get和post,用get请求完成了一个获取天气的应用,供大家参考学习一.注册网站
https://www.seniverse.com
使用它的免费服务,一天可以请求400次,基本天气信息都有了


二. 注册完成后会有API-KEY,请保存下来


三. 准备材料
   1. firebeetle-esp32或firebeetle-esp8266主板
   2. uPyCraft 0.24版
四 开始实验
1.将uPy_Lib目录下的urequests.py拖动到板子的lib目录下(注意这个文件岛主做了更改,官方原版不支持params)
2.将uPy_Lib目录下的ssd1306.py拖动到板子的lib目录下
3. 使用下面这个代码,保存成py文件,下载到板子上并运行
import urequests as requests
from machine import Pin,I2C,SPI
import time
import network
import ujson
import ssd1306
import HZK

i2c = I2C(scl=Pin(22), sda=Pin(21), freq=100000)
spi = SPI(baudrate=100000, polarity=1, phase=0, sck=Pin(18), mosi=Pin(23), miso=Pin(19))
cs = Pin(25,Pin.OUT)
HZK.init(spi,cs)
lcd=ssd1306.SSD1306_I2C(128,64,i2c)

API_KEY = 'mggxhv8zbogqbmqj'
UID = "UF239A86CE"

LOCATION = 'chengdu'
URL = 'https://api.seniverse.com/v3/weather/now.json'
UNIT = 'c'
LANGUAGE = 'zh-Hans'

SSID="YOURSSID"
PASSWORD="YOURPASSWORD"
wlan=None
s=None

def connectWifi(ssid,passwd):
global wlan
wlan=network.WLAN(network.STA_IF)
wlan.active(True)
wlan.disconnect()
wlan.connect(ssid,passwd)
while(wlan.ifconfig()=='0.0.0.0'):
    time.sleep(1)
return True

def fetchWeather(location):
    result = requests.get(URL, params={
      'key': API_KEY,
      'location': location,
      'language': LANGUAGE,
      'unit': UNIT
    })
    return result.text

if __name__ == '__main__':
    connectWifi(SSID,PASSWORD)
    result = fetchWeather(LOCATION)
    print(result)
    j=ujson.loads(result)
    print("\r\n\r\n")
    print(j['results']['location']['name'])
    print(j['results']['now']['text'])
    print(j['results']['now']['temperature'])
    addr=j['results']['location']['name']
    weather=j['results']['now']['text']
    temperature=j['results']['now']['temperature']
    lcd.text("地点:%s"%addr,5,0)
    lcd.text("天气:%s"%weather,5,16)
    lcd.text("温度:%s"%temperature,5,32)
    lcd.show()




五.实验效果








这样就能看到大成都的天气啦!


特此公告:
凡是在此帖后面跟帖的小伙伴,都有机会免费领取FireBeetle系列新产品一套(这些都是还没有上架的新产品哦),活动规则如下:
1、赠送产品包括:
   FireBeetle Covers-OLED12864 Display
   FireBeetle Covers-Camera&Audio Media Board
   FireBeetle Board-ESP8266
   FireBeetle Board-328P with BLE4.1
   FireBeetle Covers-DC Motor&Stepper Drivers
2、活动时间:   从发帖日时间起,截止8月25日止,8月25日下午5点公布领取名单
3、在哪里可以看到公布名单?
   请您加入microPython交流群:619558168,我们将在群里进行公布名单,如果没有联系到您,将自动视为放弃领取。
4、哪些小伙伴可以免费领取了?
   此次采用随机方式,如有100人回帖,那么就从0到100随机抽取5名,随机抽取方式由uPyCraft软件生成,如下图所示:

   注:为了体现公正性,随机抽取时将以视频的方式录制,大家可以在后面进行查询观看
   

luyuhao 发表于 2017-8-8 17:45:41

哇,好惊喜!好厉害哦!

imliubo 发表于 2017-8-9 11:43:36

:lol 想被僵大爷临幸   先看看这个random函数是怎么生成随机数的!
一般是用一个真随机数种子通过各种算法不停地迭代生成的一个新的随机数,主要通过什么算法呢?哈哈这就多了去了
随机正太分布,帕累托分布,高斯分布,β分布,γ分布,三角分布,威布尔分布等等等。。。。。
而且算法具体执行的顺序还不一样。。。都是随机的,哪怕你用相同的种子数去生成随机数,都会出现不同的结果
所以 祝大家幸运   啊哈哈哈{:5_183:}

0574water 发表于 2017-12-6 10:35:48

exec(open('./esp8266 oled from net .py').read(),globals())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 7, in <module>
ImportError: no module named 'HZK'
>>>

import urequests as requests
import HZK
导入这二个库出错 !

秦皇岛岛主 发表于 2017-8-8 17:55:01

厉害了,我的僵

super-power 发表于 2017-8-9 10:28:55

厉害了,我要学!

Zeyo_Pendragon 发表于 2017-8-9 10:35:05

厉害了,僵大佬,求临幸啊

fyc123123 发表于 2017-8-9 10:57:49

厉害厉害   顶一个

sanliang 发表于 2017-8-9 10:58:58

僵大师,我是饭太稀,你写的这个帖子真是前无古人后无来者,让人拍手叫绝,大快人心啊。

cheche 发表于 2017-8-9 11:00:17

本帖最后由 cheche 于 2017-8-9 11:01 编辑

楼主威武!在下这厢有礼了!

wanju 发表于 2017-8-9 11:04:16

算我一个 嘿嘿

Forgotten 发表于 2017-8-9 11:10:58

前排求中奖{:5_144:}

沧海笑 发表于 2017-8-9 13:20:51

跟着僵师兄学mpy:handshake。好运自然来:hug:

僵大懒 发表于 2017-8-9 13:25:25

sanliang 发表于 2017-8-9 10:58
僵大师,我是饭太稀,你写的这个帖子真是前无古人后无来者,让人拍手叫绝,大快人心啊。 ...

饭饭大佬。:lol吓死个神啊

僵大懒 发表于 2017-8-9 13:29:51

Zeyo_Pendragon 发表于 2017-8-9 10:35
厉害了,僵大佬,求临幸啊

且看imliubo的算法解析大法

僵大懒 发表于 2017-8-9 13:31:56

imliubo 发表于 2017-8-9 11:43
想被僵大爷临幸   先看看这个random函数是怎么生成随机数的!
一般是用一个真随机数种子通过各种算法 ...

大佬,跪求算法一套:lol

dexin 发表于 2017-8-9 14:30:57

厉害了 python真的是越来越全面了!

jszsj 发表于 2017-8-9 17:08:48

啊哈,中文也阔以,这个可以有,可以把我的串口TFT屏用起来了

see01995 发表于 2017-8-10 10:17:55

看半天没说怎么实现中文支持?刷固件?

僵大懒 发表于 2017-8-10 11:05:55

see01995 发表于 2017-8-10 10:17
看半天没说怎么实现中文支持?刷固件?
目前中文支持只有esp32,需要用upy0.24刷固件,8266,pyboard等后面会支持

pythonboy 发表于 2017-8-10 18:41:33

不知道,博主是不是在外部flash烧写了字库,通过SPI接口获取字模,如果是这样,对字体的取模方式上有限制吗?

hnyzcj 发表于 2017-8-11 10:42:36

顶起来好活动
页: [1] 2 3
查看完整版本: micropython支持中文啦!