无线Tally自己动手不求人(四)编程篇@拍电影filmaker.cn

本帖最后由 KZC 于 2017-7-1 09:28 编辑

很多朋友一听到编程就非常头疼,觉得非常高深非常复杂,无法下手。实际上无论是硬件还是编程都和堆积木非常类似。只要明确了各个部分的功能和参数的意义,实现类似于Tally这种简单的功能还是非常轻松的。那么今天就将无线Tally的代码分享给大家。
出于最简单最容易理解的角度,我没有使用复杂点编码方式,而是直接以1字节表示一个Led的亮暗。比如8讯双色Tally我们就需要16字节来表示16个Led的亮暗信息。
那么先从主控端开始,为了简洁,在主控端我只写出了3讯双色Tally的代码。(所有//后和/* */之间的的都是注释)

int tally1=1;
int tally2=2;
int tally3=3;
int tally4=4;
int tally5=5;
int tally6=6;
//设置tally对应的模拟输入引脚号,如果有需要更多的led,则可以依次增加。
int t1=0;
int t2=0;
int t3=0;
int t4=0;
int t5=0;
int t6=0;
//初始化模拟输入读取的存储,如果有需要更多的led,则可以依次增加。
byte Tally[7]={};
/*初始化实际发送的一维字节数组。[]内的数值为实际Led数量+1。在这里我们有6个LED那么[]内数值即为6+1=7。*/
void setup() {
  Serial1.begin(9600);
}
//初始化串口 9600为波特率。我们需要保证主控端和终端的波特率一致。
void loop()
//循环体 会在经过setup初始化后持续循环执行
{
  t1 = analogRead(tally1);
  t2 = analogRead(tally2);
  t3 = analogRead(tally3);
  t4 = analogRead(tally4);
  t5 = analogRead(tally5);
  t6 = analogRead(tally6);
//读取模拟输入的值并存储到之前初始化的int类型中
  Tally[0]=0;
  if(t1<912)
  {
    Tally[1]=1;
  }
  else
  {
    Tally[1]=0;
  }
  if(t2<912)
  {
    Tally[2]=1;
  }
  else
  {
    Tally[2]=0;
  }
  if(t3<912)
  {
    Tally[3]=1;
  }
  else
  {
    Tally[3]=0;
  }
  if(t4<912)
  {
    Tally[4]=1;
  }
  else
  {
    Tally[4]=0;
  }
  if(t5<912)
  {
    Tally[5]=1;
  }
  else
  {
    Tally[5]=0;
  }
  if(t6<912)
  {
    Tally[6]=1;
  }
  else
  {
    Tally[6]=0;
  }  
/*判断Tally信号的高低并写入编码后的数值到一维字节数组中。1即是亮,0即是灭。如果需要更多LED数量 即可将*/
/*
if(t6<912)
  {
    Tally[6]=1;
  }
  else
  {
    Tally[6]=0;
  }
*/
/*这一段复制,每一段代表一个LED灯。只需修改两个[]中的数字即可。(复制时不含/* */)*/
  Serial1.write(Tally,7);
/*将一维字节数组写入到串口中。最后的数字7需要与声明byte Tally的数值相同,等于Led数量+1.*/
  delay(30);
//延迟30毫秒 以避免持续写入造成错误。
}

以上即为我们主控端的程序代码。结构非常简单,也非常直观,如果需要更多的LED数量,则更改对应数值和复制对应模块即可。
那么终端的程序代码则更为简单。

int led_pin1 = 3;
int led_pin2 = 4;
//设置数字输出引脚序号。
byte Tally[7]={};
//[]中数字需要与主控端的保持一致
void setup() {
    Serial.begin(9600);
    pinMode(led_pin1,OUTPUT);
    pinMode(led_pin2,OUTPUT);
}
//设置数字引脚为输出。
void loop() {
  //循环体
  Serial.readBytes(Tally,7);
  //从串口中读取Tally数据。
  if(Tally[0]==0)
  {
     if(Tally[1]==1)
     {
        digitalWrite(led_pin1, HIGH);
     }
     else
     {
        digitalWrite(led_pin1, LOW);
     }
     if(Tally[2]==1)
     {
        digitalWrite(led_pin2, HIGH);
     }
     else
     {
        digitalWrite(led_pin2, LOW);
     }
    /*此处只针对两个LED进行操作,因为我们是使用双色Tally ,每个终端只控制两个LED的亮暗,那么如何区别不同讯道呢?我们依旧只需要更改[]中的数值,在这个例子中我们写出了第一讯,那么如果我们需要第二讯,则可以将1和2修改为3和4。第三讯则将1和2修改为5和6。之后以此类推即可。一开始的Tally[0]保持不变。*/
  }
}

以上即为我们需要的全部程序代码,稍有编程经验的人估计在一个小时内就能写出来,那么毫无编程经验的人,根据说明,也可以经过修改对应数值和模块就能实现所需要的功能。
最简单的两讯道的系统全部部件和连线。左侧为主控端 右侧为两个终端。

一个三讯系统所需要的器件。
以上即为我们无线Tally的全部内容了,希望能够对各位有所帮助。如果有其他想自己动手做的影视设备,欢迎在下方评论和给我留言。
(0)

相关推荐

  • 用ArduinoNano,做个简易金属探测器

    金属探测器,大家估计会喜欢吧? 如下是电路图和源码,大家可以按此制作DIY~ BOM清单: R1=330Ω,resistor R2=1kΩ,resistor C1=10nF,ceramic capac ...

  • 学做8位计算机

    在B站上看到有大佬做了个8位计算机,非常感兴趣,同时想了解一下计算机底层到底是怎么运作的,就跟着做了一个.以下是笔记,写的比较细. 先show一下代码 序号 指令 说明 0 OUT 显示 1 ADD ...

  • Arduino的崇高感和Lilytiny的优美感

    Arduino的崇高感和Lilytiny的优美感 Arduino的易用性让我们设计物理实验的想法成为现实,这说明以方便易用为目的的单片机产品发展方向是崇高的:而Arduino家庭多数使用的是Atmel ...

  • Arduino在中断函数里面怎么延时

    Arduino在中断函数里面怎么延时 Arduino里面有两种中断,一种是内部中断,就象系统时钟那样,一直在那儿持续,轮询到中断信号,以最高的优先级去执行.另一种是外部中断,输入中断信号,以低于内部中 ...

  • 太极拳老谱四十篇

    太极拳老谱,是杨氏家传太极拳古谱,其中有相当重要和实用的论述,故而传授也十分秘惜,早年散见于有关著作,既不完整,又多舛误.此谱一直在杨澄甫夫人侯助清处保存,1961年转交其子杨振基.直到1993年,杨 ...

  • 贴片led灯珠规格型号一览表(一),led灯珠选型不求人(系列篇1)

    贴片led灯珠规格型号一览表(一) 今天,有个读者找贴片灯珠,问有没有贴片led灯珠规格型号一览表. 贴片led灯珠规格型号一览表,咱有没有啊. 有. 只是型号太多了. 比如,0201贴片led灯珠规 ...

  • 《诗经》第四十七篇   桑中

    ​<诗经>第四十七篇   桑中 这是一首描写男女相互爱慕以至定期会面的情诗. 爰采唐矣?沬之乡矣.云谁之思?美孟姜矣.期我乎桑中,要我乎上宫,送我乎淇之上矣. 爰采麦矣?沬之北矣.云谁之思 ...

  • 天好冷啊,给摩托车装个电加热手把套,自己动手不求人!

    作者:摩托小生 首先拆下电门锁盖的两颗螺丝,再拆大灯总成的两颗固定螺丝.拆下大灯背壳,拆下大灯开关的两颗螺丝. 卸松平衡块的螺丝. 轻轻摇动就能取下来,左右一样,取出油门转把,再用力拔下左手把胶套. ...

  • 《诗经》第四十三篇   二子乘舟

    ​<诗经>第四十三篇   二子乘舟 这首诗表达了父母对乘舟远行儿子的记挂心情.一说卫宣公二子伋与寿争相死,国人伤之,有感而作. 二子乘舟,汎汎其景.愿言思子,中心养养. 二子乘舟,汎汎其逝 ...

  • 《诗经》第四十篇    北风

    ​<诗经>第四十篇    北风 这是一首反映百姓逃亡的诗歌.卫君行虐政,诗人召唤朋友相携而逃. 北风其凉,雨雪其雱.惠而好我,携手同行.其虚其邪?既亟只且! 北风其喈,雨雪其霏.惠而好我, ...

  • 读稻盛和夫《干法》(第四十篇):将创造发明导向成功的“正确的地图”

    序 言 " 创造性"地工作:每天都要钻研创新 不满足于现状,总想做得更好,总想不断提升自己,有没有这种"想法"或许就是产生"成功"与&quo ...

  • 精读系列第四十七篇:内腐外朽-迅速凋亡的帝国

    精读系列第四十七篇:内腐外朽-迅速凋亡的帝国

  • 张环先绘画作品之十三:国画山水续篇(四写生篇)

    張环先,青岛市人,1949年出生.青岛市书法家协会会员,一级美术师.日本国书芸院监查员,中韩书画交流协会会员,法国华艺驰声协会志愿者会员. 国画和篆刻作品多次获国内省.市级和日本.韩国.法国等书画展的 ...