乐乐2365 发表于 2015-8-20 19:59:34

哪位大侠看看程序怎么验证不过去

int BUTTON =6;
char HEXHEX0={0xA5,0x5A,0x05,0x82,0x00,0x10,0x00}
char HEXsu={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09}//显示0到9
void setup(){
pinMode(BUTTON,INPUT);
Serial.begin(9600);
}
void loop()
{
char disp =0;
if(digitlRead(BUTTON)==LOW)
{
delay(2);
if(digitalread(BUTTON)==LOW)
{
while(!BUTTON);
Serial.write(HEXHEX0,7);
disp = HEXsu[];
disp++;
Serial.write(disp);发送0到9
if(disp==10)
disp==0;}}}

乐乐2365 发表于 2015-8-20 20:01:27

最好能叫程序到9999.怎么写给个思路


Super169 发表于 2015-8-20 20:20:03

你想做什麼不說, 出現什麼問題又不說, 這是一個猜謎遊戲嗎?

隨便看, 你的 disp 設定本身就有問題了.char disp=0; disp = HEXsu[]; disp++;Serial.write(disp);
你想用 disp 來做什麼?是 char? 是 array? 是 數值? 還是 pointer?

328522073 发表于 2015-8-20 20:59:13

本帖最后由 328522073 于 2015-8-20 21:00 编辑

disp = HEXsu[];
改成disp = HEXsu;
disp类型char改成char*

乐乐2365 发表于 2015-8-20 21:49:19

Super169 发表于 2015-8-20 20:20
你想做什麼不說, 出現什麼問題又不說, 這是一個猜謎遊戲嗎?

隨便看, 你的 disp 設定本身就有問題了.ch ...

Button低电平。发送SEXsu里边的0X00到0x0A到串口液晶屏。每次加一。

通幽境 发表于 2015-8-20 23:31:03

初学?感觉语法上问题很大。。
比如这些
while(!BUTTON);
f(disp==10){disp==0;}
disp = HEXsu[];

然后拼写啥子的,分号啥的。。。建议从点灯开始

Super169 发表于 2015-8-20 23:32:34

你的程式中, 有太多問題了, 很難完全說清楚.
從你的程式, 很難確定你想做什麼, 因為太多錯誤了.

首先, 你好像想用 array 去做, 之後忽然想用 pointer(disp = HEXsu[]) 去做.
如果是想把 HEXsu 的值一個個送出去, 用 index 的方式就可以, 不需要 pointer.

disp = HEXsu[]; <- 完全不明白你想做什麼.
if (disp==10); <- 兩句加起來看, 完全是莫名其妙

如果是 disp 是 (char *), 就應該是 disp = HEXsu;
但你之後 Serial.write(disp) 就應該改成 Serail.write(*disp);
當中 disp++ 就更加沒意思, 因為 disp 在 while 之內設定, 每次都會是同一個位置.

可能你是想用 arrat index 的做法, 但完全做錯了.
一開始應該是設定 int disp; 之後初設值為 0, 即 disp = 0; 應該放 while 之外.
而輸出應該是Serial.write(HEXsu);.
如果只是為了 輸出 0 至 10 的數值, 也不用加一個 array 去記下, 直接把 disp 的值輸出就可以了.
反正 HEXsu 的值, 當 disp 是 0 至 9 時, 跟 disp 的值是一樣的.

自己看不出問題, 可能你本身對 c++ 並不認識, 建議你先看看 c++ 語言的教學吧.

還有一點, 不知你的串口液晶屏接收的訊號會如何顯示, 一般收到 0x00 , 0x01, ... 是不會顯示出數字 0, 1, ... 的.

乐乐2365 发表于 2015-8-21 07:29:52

Super169 发表于 2015-8-20 23:32
你的程式中, 有太多問題了, 很難完全說清楚.
從你的程式, 很難確定你想做什麼, 因為太多錯誤了.



单片机发送A5.5A.05.82.00.10.00.01.显示1。就是叫01到09循环。不会写。大侠指教。

Super169 发表于 2015-8-21 11:19:46

乐乐2365 发表于 2015-8-21 07:29 static/image/common/back.gif
单片机发送A5.5A.05.82.00.10.00.01.显示1。就是叫01到09循环。不会写。大侠指教。

先把 disp 設定為 0;
然後在 while loop 內發送 HEXHEX0 再加上 Serial.write(disp++); 直到 disp 為 10 變回 0.

如果每按一次都是全發 0-9 一組出去, 不需要考慮中途放手而停止, 直接用 for loop 就更簡單了.

乐乐2365 发表于 2015-8-21 12:37:17

Super169 发表于 2015-8-21 11:19 static/image/common/back.gif
先把 disp 設定為 0;
然後在 while loop 內發送 HEXHEX0 再加上 Serial.write(disp++); 直到 disp 為 10 ...

int BUTTON =6;
char HEXHEX0={0xA5,0x5A,0x05,0x82,0x00,0x10,0x00}
char HEXsu={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09}//显示0到9
void setup(){
pinMode(BUTTON,INPUT);
Serial.begin(9600);
}
void loop()
{
char disp =0;
if(digitlRead(BUTTON)==LOW)
{
delay(2);
if(digitalread(BUTTON)==LOW)
{
Serial.write(HEXHEX0,7);
Serial.write(disp++);
if(disp==10)
{
disp=0;
}

Super169 发表于 2015-8-21 14:08:26

如果你直接用 loop() 去循環, 就把 char disp=0 放到最頂吧.否則, 每次都只是 0.
页: [1]
查看完整版本: 哪位大侠看看程序怎么验证不过去