ミニpcになってからUSB挿し口を変えて成功することが多くなった。。。。
https://tool-lab.com/pic-basic-23/ ここに電源関係がくわしい sdc,lancableはペンディング
なお書き込みスピードが速すぎとエラーがでたので以下を参考にスピードをLOWにした
書き込み失敗は多くLVP onで起こるようで、mplab snapをつかわんのでLVP offとした
https://www.watchittrend.com/mplab-icd4-write-speed-error/
以下はgetchのコンフリクトが起こったので、char eusart_getch(void)として
(eusart.c内で)衝突回避できた、c90でuart redirectでprintfがつかえた 便利
#include "mcc_generated_files/mcc.h"
#include <stdio.h>
#include <stdlib.h>
int16_t Xaxis,Yaxis,Zaxis;
char Line1[] = " X Y Z ";
char Line2[] = "-xxx -xxx -xxx";
void itostring(char digit, uint16_t data, char *buffer){
char i;
buffer += digit;
for(i=digit; i>0; i--){
buffer--;
*buffer = (data % 10) + '0';
data = data / 10;
}
};
void numtostr(int16_t number, char *buf){
char* ptr;
ptr = buf;
if(number >= 0)
*buf = '+';
else {
number *= -1;
*buf = '-';
}
itostring(3, (uint16_t)number, ptr+1);
};
void main(void){
SYSTEM_Initialize();
while(1){
Xaxis = (int16_t)ADC_GetConversion(ANX) - 511;
Yaxis = (int16_t)ADC_GetConversion(ANY) - 511;
Zaxis = (int16_t)ADC_GetConversion(ANZ) - 511;
numtostr(Xaxis,Line2);
numtostr(Yaxis,Line2+6);
numtostr(Zaxis,Line2+12);
printf(" X Y Z is %s\n", Line1);
printf("%s\n", Line2);
__delay_ms(1000);
}
}
------------------------------------------------------------------
aqm0802が3.3v駆動にて以下を実行(温度はダミー、ビルトインledは便利)
# LM61CIZ
import machine
import utime
# AQM0802
from machine import Pin, I2C
from micropython import const
from utime import sleep
# LM61 Vout connected to 34pin(ACD2)
# input LM61CIZ , convert voltage to temp value
sensor_temp = machine.ADC(2)
conversion_factor = 3.3 / (65535)
# AQM function
_ST7032 = const(0x3e)
_SETTING = const(0x00)
_DISPLAY = const(0x40)
# AQM initialized
def init(i2c):
orders = [b'\x38', b'\x39', b'\x14', b'\x73', b'\x56', b'\x6c',
b'\x38', b'\x0c', b'\x01']
sleep(0.04)
for order in orders[:6]:
i2c.writeto_mem(_ST7032, _SETTING, order)
sleep(0.001)
sleep(0.2)
for order in orders[6:]:
i2c.writeto_mem(_ST7032, _SETTING, order)
sleep(0.001)
sleep(0.001)
# AQM show setting
def show(i2c, string):
i2c.writeto_mem(_ST7032, _SETTING, b'\x01')
sleep(0.002)
for i in string:
i2c.writeto_mem(_ST7032, _DISPLAY, i.encode())
# AQM show setting
def main():
i2c = I2C(1, scl=Pin(27), sda=Pin(26))
init(i2c)
#display temp data
show(i2c, tempdata)
while True:
#センサーから値を取り出します
#reading = sensor_temp.read_u16() * conversion_factor
#センサから取り出した電圧
#print(sensor_temp.read_u16())
# 電圧を温度に変換
#temp_calc = (reading*1000-600) / 10
temp_calc = 23.0
#shellに表示
#print("{0:.1f}".format(temp_calc) + "C")
#print(reading)
#tempdata = str(temp_calc)
#小数点以下1位のみ表示+ 温度のCをつける
tempdata = ("{0:.1f}".format(temp_calc) + "C")
#Run
#if __name__ == '__main__':
main()
# 動作確認用のLチカ
led = machine.Pin(25, machine.Pin.OUT)
led.value(1)
utime.sleep(0.2)
led.value(0)
#each 2 second
utime.sleep(2)
0 件のコメント:
コメントを投稿