极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17147|回复: 10

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

[复制链接]
发表于 2015-8-20 19:59:34 | 显示全部楼层 |阅读模式
int BUTTON =6;
char HEXHEX0[7]={0xA5,0x5A,0x05,0x82,0x00,0x10,0x00}
char HEXsu[10]={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;}}}
回复

使用道具 举报

 楼主| 发表于 2015-8-20 20:01:27 | 显示全部楼层
最好能叫程序到9999.怎么写给个思路


回复 支持 反对

使用道具 举报

发表于 2015-8-20 20:20:03 | 显示全部楼层
你想做什麼不說, 出現什麼問題又不說, 這是一個猜謎遊戲嗎?

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

回复 支持 反对

使用道具 举报

发表于 2015-8-20 20:59:13 | 显示全部楼层
本帖最后由 328522073 于 2015-8-20 21:00 编辑

disp = HEXsu[];
改成disp = HEXsu;
disp类型char改成char*
回复 支持 反对

使用道具 举报

 楼主| 发表于 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[];

然后拼写啥子的,分号啥的。。。建议从点灯开始
回复 支持 反对

使用道具 举报

发表于 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[disp]);.
如果只是為了 輸出 0 至 10 的數值, 也不用加一個 array 去記下, 直接把 disp 的值輸出就可以了.
反正 HEXsu[disp] 的值, 當 disp 是 0 至 9 時, 跟 disp 的值是一樣的.

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

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

使用道具 举报

 楼主| 发表于 2015-8-21 07:29:52 来自手机 | 显示全部楼层
Super169 发表于 2015-8-20 23:32
你的程式中, 有太多問題了, 很難完全說清楚.
從你的程式, 很難確定你想做什麼, 因為太多錯誤了.


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

使用道具 举报

发表于 2015-8-21 11:19:46 | 显示全部楼层
乐乐2365 发表于 2015-8-21 07:29
单片机发送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 就更簡單了.

回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-21 12:37:17 | 显示全部楼层
Super169 发表于 2015-8-21 11:19
先把 disp 設定為 0;
然後在 while loop 內發送 HEXHEX0 再加上 Serial.write(disp++); 直到 disp 為 10 ...

int BUTTON =6;
char HEXHEX0[7]={0xA5,0x5A,0x05,0x82,0x00,0x10,0x00}
char HEXsu[10]={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;
}
回复 支持 反对

使用道具 举报

发表于 2015-8-21 14:08:26 | 显示全部楼层
如果你直接用 loop() 去循環, 就把 char disp=0 放到最頂吧.  否則, 每次都只是 0.
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-16 18:49 , Processed in 0.037533 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表