正在自学C,请大家多多指点,共同进步!谢谢


int HallState1;            //变量为三个霍尔传感器(3,2,1)
int HallState2;
int HallState3;
int HallVal=1;             //所有3个霍尔传感器/二进制值
int mSpeed   =0;           //前进速度
int bSpeed   =0;           //制动电平
int throttle =0;           //油门,这个变量是用于模拟测量节气门电位计的位置
int TCCR2B;
/
void setup() {
pinMode(0,INPUT);         //设置油门拉杆信号输入
pinMode(3,INPUT);         // Hall1, 2,3,
pinMode(3,INPUT);      
pinMode(4,INPUT);
pinMode(5,OUTPUT);        //IN1,2,3  // 输出到 L6234 驱动
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);        // EN 1,2,3,
pinMode(10,OUTPUT);
pinMode(11,OUTPUT); 
Serial.begin(9600);
                          //先清除三个分频器的位
int prescalerVal = 0x07;  //创建一个预分频器值Val1 变量并设置它的二进制数为00000111
int prescalerVal2 = 1;    //设置另一个分频器值Val2 等于 二进制数11111000
TCCR1B&=~prescalerVal;    // Set PWM for pins 9,10 to 32 kHz// TCCR0B 跟 预分频器的二进制数值(11111000)相与
TCCR1B|=prescalerVal2;    //现在设置适当的预分频器的位  //  TCCR0B 跟分频器(00000001) OR
TCCR2B&=~prescalerVal;    // Set PWM for pins 3,11 to 32 kHz (Only pin 11 is used in this program)//tccr0b 与等于  分频器二进制数11111000
TCCR2B|=prescalerVal2;    //先清除所有tccr0b三分频器的值 //tccr0b or//现在设置适当的预分频器的位  或与分频器的二进制数00000001
}
///
void loop()
{                                             //MAIN LOOP OF THE PRGROM
//time = millis();
//Serial.println(time);
//Serial.print("\n"); 
throttle = analogRead(0);                     //读节气门电位器的值
mSpeed = map(throttle, 512, 1023, 0, 255);    //电机速度 映射成 遥控杆位置(电位计)的一半
bSpeed = map(throttle, 0, 511, 255, 0);       //制动电平 也映射 遥控杆位置的另一半 //mSpeed = 100; //used for debugging
HallState1=digitalRead(2);
HallState1=digitalRead(3);
HallState1=digitalRead(4);
//digitalWrite(8, HallState1);                // 当相应的传感器高时,LED开启,原本用于调试
//digitalWrite(9, HallState2);
//digitalWrite(10, HallState3);
HallVal = (HallState1) + (2*HallState2) + (4*HallState3);   //计算3个霍尔传感器的二进制值
Serial.print("H1:");                                        // used for debugging
Serial.println(HallState1);
Serial.print("H2:");
Serial.println(HallState2);
Serial.print("H3:");
Serial.println(HallState3);
Serial.println(" ");
Serial.println(mSpeed);
Serial.println(HallVal);
Serial.print("\n");
delay(1000);
 
/*
   T1 = digitalRead(2);                                     // 监控晶体管输出Monitor transistor outputs
 T1 = ~T1;
 T2 = digitalRead(4);
 T2 = ~T2;
 T3 = digitalRead(5);
 T3 = ~T3;
 Serial.print(T1);
 Serial.print("\t");
 Serial.print(T2);
 Serial.print("\t");
 Serial.print(T3);
 Serial.print("\n");
 Serial.print("\n");
 Serial.print(digitalRead(3));
 Serial.print("\t");
 Serial.print(digitalRead(9));
 Serial.print("\t");
 Serial.println(digitalRead(10));
 Serial.print("\n");
 Serial.print("\n");          */
delay(500);
if (throttle>511)
 { switch (HallVal)     //换向                     

case 3: //PORTD = B011xxx00;         //0-7脚(P1)输出 , XXX指的是霍尔输入,六步换向步奏不变(正转)
                                     //Desired Output for pins 0-7 xxx refers to the Hall inputs, which should not be changed                     
PORTD&=B00011111;
PORTD|=B01100000;
analogWrite(9,mSpeed);               // A相PWM                   高侧晶体管
analogWrite(10,0);                   // B相关闭(占空比= 0)
analogWrite(11,255);                 // C相打开(占空比= 100%)  低侧晶体管
break;
case 1:    //PORTD = B001xxx00;
PORTD&=B00011111; 
PORTD|=B00100000; 
analogWrite(9,mSpeed);                //A相PWM                   高侧晶体管
analogWrite(10,255);                  //B相打开(占空比= 100%)  低侧晶体管
analogWrite(11,0);                    //C相关闭(占空比= 0)
break;
case 5:     //PORTD = B101xxx00;
PORTD&=B00011111;
PORTD|=B10100000;
analogWrite(9,0);                    //A相关闭(占空比= 0)
analogWrite(10,255);                 //B相打开(占空比= 100%) 
analogWrite(11,mSpeed);              //C相PWM
break;
case 4:   //PORTD = B100xxx00;
PORTD&=B00011111;
PORTD|=B10000000; 
analogWrite(9,255);
analogWrite(10,0);
analogWrite(11,mSpeed);
break;
case 6:     //PORTD = B110xxx00;
PORTD&=B00011111;
PORTD=B11000000; 
analogWrite(9,255);
analogWrite(10,mSpeed);
analogWrite(11,0);
break;
case 2:    //PORTD = B010xxx00;
PORTD&=B00011111;
PORTD|=B01000000;
analogWrite(9,0);
analogWrite(10,mSpeed);
analogWrite(11,255);
break;
}
}
       
else{    //PORTD = B000xxx00; //  反向制动 L6234 制动时在每个阶段  低侧晶体管引脚总是拉低,上部晶体管总是在pwm 或刹车。
PORTD&=B00011111;
PORTD|=B00000000;
switch (HallVal)
{
case 3:
analogWrite(9,bSpeed);
analogWrite(10,0);
analogWrite(11,0);
break;
case 1:
analogWrite(9,bSpeed);
analogWrite(10,0);
analogWrite(11,0);
break;
case 5:
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,bSpeed);
break;
case 4:
analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,bSpeed);
break;
case 6:
analogWrite(9,0);
analogWrite(10,bSpeed);
analogWrite(11,0);
break;
case 2:
analogWrite(9,0);
analogWrite(10,bSpeed);
analogWrite(11,0);
break;
}
}
//time = millis();
//Serial.println(time);  //自程序启动以来打印时间prints time since program started
// Serial.print("\n");
//Serial.flush();        //注释掉这如果你会使用串口调试 uncomment this if you will use serial port for debugging
}

正在自学C,请大家多多指点,共同进步!谢谢相关推荐

  1. 新手上路,请大家多多关照~

    各位朋友: 我是 新手,刚上路,请大家多多关照~ 我对软件编程比较感兴趣,但是水平很差,所以以后还是请各位高手多多指点哈~

  2. 刚开始Windows Mobile的开发,请大家多多关照

    刚开始学习Windows Mobile的开发,现在正在学习WML和WAP的网站制作,请大家多多关照. 转载于:https://www.cnblogs.com/czha2002/archive/2005 ...

  3. 北工大2009计算机系新生李洋,强势围观!初次入校,请您多多关照……

    原标题:强势围观!初次入校,请您多多关照-- 有这样一个人 在你收到录取通知书后 就开始了迎接你的工作 有这样一个人 关注着你生活中的点点滴滴 有这样一个人 在你顶着烈日军训时会心疼地注视着你 Ta是 ...

  4. 2014年博客之星评选,请大家多多支持

    我参加 了CSDN2014 博客之星大赛,请大家多多支持投我一票,谢谢. 参选理由:在技术的道路上,要学会学习和分享,不停追求,不停进步,直至完美.... 投票网址: http://vote.blog ...

  5. 新人初学python在运行脚本时报错了,不知道如何处理还请各位高人指点,拜托拜托

    新人初学python在运行脚本时报错了,不知道如何处理还请各位高人指点,拜托拜托 下面是报错: E + where False = <bound method LogIn.view_userna ...

  6. Devexpress学习篇(请大家多多指教)

         源代码下载 学习Devexpress有一个多月了,一直没也什么实质的进展和收获,现在遇到问题了,请大家多多指教. 问题一:(如图所示) 1.在xaf中是否可以添加如下控件?(图中为ps上去的 ...

  7. Hello! 大家好!我叫郑彬,说实话,我只是知道用点office,不太会计算机的,请大家多多指教噢!

    Hello!  大家好! 我叫郑彬,说实话, 我只是知道用点office,不太会计算机的,请大家多多指教噢!

  8. 我作的一个单元测试框架程序,请大家多多指教.

    我作的一个单元测试框架程序,请大家多多指教. http://cosoft.org.cn/projects/verysimpleunit/ 作作广告,呵呵

  9. 第一次写博客,请大家多多包涵...

    本人是经济管理学院的学生,有幸加入计算机这个大家庭.参加"夏令营"班,经过几天的学习,现在已经能够初步地做一些小东西,感到很欣喜,也越发激起了我的学习兴趣. 在这几天的学习中,有过 ...

最新文章

  1. 从贫困的“问题少年”到计算机博士,最后成为商界泰斗,“创业之神”吉姆•克拉克是如何走向封神之路的?...
  2. 说一下你对多态的理解?_掌握了多态的特性,写英雄联盟的代码更少啦!
  3. Java开发中业务层入参校验详细解析
  4. 我XXXX!!!够了!!!从github拉到dockerhub,再用daocloud加速下载
  5. keras从入门到放弃(十一)电影评价预测
  6. JAVA Web Servlet中的异步处理 (1) -- Servlet3.0中的Async支持
  7. java uuid静态方法_Java UUID toString()方法与示例
  8. html ie 版本设置密码,如何给IE浏览器设置一个密码的详细图文步骤
  9. anaconda安装python包_Anaconda:安装或更新 Python 第三方包
  10. c语言从指定窗口截图,c++ 屏幕截图指定窗口句柄后台截图返回位图句柄
  11. Swift - 05 - 数值型字面量
  12. 计算机网络误区——为什么我的PING包发不出去?
  13. java中class文件反编译_java中的.class文件反编译
  14. visual studio多工程项目管理
  15. web应用微信扫码绑定用户
  16. 已解决SyntaxError:positional argument follows keyword argument
  17. win10系统服务器怎样设置密码,win10系统的电脑如何给普通文件夹设置密码
  18. FinalShell Mac OS版安装
  19. ubuntu 18.04 下安装微信
  20. 吃透Java并发:AQS结构详解及其CLH变种、CLH、MCS

热门文章

  1. Jiss Wang:Whitecoin白币新生态体系中的落地应用
  2. 9.2 使用导航窗格管理数据库对象
  3. https+webservice
  4. 全球及中国户外餐具行业竞争格局及发展前景规模预测报告2021-2027年版
  5. 上海哪里有学陈氏太极拳?
  6. iText7高级教程之html2pdf——1.从Hello HTML开始
  7. SQLHelper助手类【代码】
  8. smb测速工具_MyCloud samba3 的传输速度为啥是 nfs 性能的一倍?那里操作有问题?...
  9. 栋感光波-冲刺日志(第4次)
  10. 软件测试——10款目前最热门的测试工具,总有一款适合你