我希望能够看到我的Arduino草图的汇编语言列表.我怎样才能做到这一点?
更新:我在Windows机器上运行Arduino软件.
我有兴趣制作一个基于Arduino的MIDI控制器与我的电脑对话.看看Arduino MIDI的其他例子(例如,使用Arduino的MIDI输出),它们似乎都连接了一个专用的5针DIN.这是有道理的,因为这是将键盘,扩展器和音序器连接在一起的原始电缆.
但是,我想将MIDI发送到我的电脑.5针DIN必须插入转换盒,通过USB连接到我的PC.我已经有一根USB线将我的Arduino连接到我的电脑上.那我为什么不能用这个呢?
我假设什么会阻止我,这些转换盒都带有驱动程序,知道如何处理通过USB传入的信号.然而,比如说,我的计算机上的虚拟合成器不会期望或知道如何处理通过串行端口进入的原始字节.那么我可以将这些驱动程序的标准版本或免费版本用于我自己的项目吗?或者,如果没有,写一个会怎么样?我在哪里可以找到更多相关信息?
是否有一个很好的教程,使用Android设备是USB主机Android的Arduino?(Android设备具有操作系统版本3.1(Honeycomb)或更高版本).开发者网站上唯一的主机程序是导弹发射器,它似乎比与Arduino接口简单得多.
细节:我正在尝试让Asus Transformer成为Arduino Uno的主机,但由于关于Android 主机模式如何工作的信息非常少,我迷失在哪里开始.我只需要Android就可以从Arduino的内存中读取数据值.Arduino用于计算信号的频率,然后需要将该值传递给Android.如果我错过了一些简单的方法,请随时告诉我.
(有很多关于使用ADK使Arduino成为主机的信息,但是使用Transformer,这不是一个选项 - 请参阅Stack Overflow问题是否可以让Android ADK在华硕Eee Pad上运行变压器运行3.1? .
这些信息实际上并不需要Transformer或Uno特定,我似乎无法找到在平板电脑上使用新主机模式的人的例子.
我基于L298N芯片制造了这个电机屏蔽,以控制一个水箱的两个电机.它将引脚5和6用于一个电机,而引脚10和11用于另一个电机.
在尝试添加TSOP 4838以便使用IR遥控器控制油箱时,我注意到在10/11引脚上反向移动电机只能在全速运行 - 即引脚11上的HIGH(255)值.低于该值不会在引脚11上输出任何内容(这些引脚上的测量电压为0 V).
对于遥控器,我使用这个库.该IR接收器连接在引脚2(但销并不重要).问题是库代码本身.启用IR监听的行irrecv.enableIRIn();是导致问题的原因.我了解到内部Arduino定时器和屏蔽用于PWM的引脚存在冲突.
这是反向驱动电机的代码:
#include <IRremote.h>
// IR receiver configuration
const int irPin = 2;
IRrecv irrecv(irPin);
// Motors configuration
const int mLeftPin1 = 10;
const int mLeftPin2 = 11;
const int mRightPin1 = 5;
const int mRightPin2 = 6;
void setup()
{
// Start IR
irrecv.enableIRIn();
// Setup motors
pinMode(mLeftPin1, OUTPUT);
pinMode(mLeftPin2, OUTPUT);
pinMode(mRightPin1, OUTPUT);
pinMode(mRightPin2, OUTPUT);
// Move left motor in reverse, slower speed …Run Code Online (Sandbox Code Playgroud) 一,问题:
主草图文件:
char foo; // required to clean up some other problems
#include <Arduino.h> // tried it in desperation, no help
#include "a.h"
void setup(){
Serial.begin(9600);
Serial.println("\nTest begins");
for (int num = -1; num < 1; num++){
Serial.print(num);
if (isNegative(num)){
Serial.println(" is negative");
} else {
Serial.println(" is NOT negative");
}
}
}
void loop(){}
Run Code Online (Sandbox Code Playgroud)
//啊
#ifndef H_A
#define H_A
boolean isNegative(int x); // Err#1
int anotherOdity();
#endif // H_A
Run Code Online (Sandbox Code Playgroud)
// a.cpp
#include "a.h"
int isNegative(int x){
Serial.println("I can't print …Run Code Online (Sandbox Code Playgroud) 我想到条件和编译器.我正在编写Arduino的应用程序,所以我需要尽可能快的应用程序.
在我的代码中我有这个:
#define DEBUG false
...
if (DEBUG)
{
String pinName;
pinName = "Pin ";
pinName += pin;
pinName += " initialized";
Serial.println(pinName);
}
Run Code Online (Sandbox Code Playgroud)
我想知道编译器是否在二进制文件中不包含代码(if块中的代码).条件总是错误的,所以程序永远不会去那里.
从另一方面来看.如果DEBUG是真的怎么办?Arduino是否测试条件或编译器只包含if在二进制文件中的主体?
我发现这个网站https://gcc.gnu.org/onlinedocs/gcc-3.0.2/cpp_4.html关于#if指令,所以我可以重写代码以获得这些指令而不是"正常"if.但我想知道我是否应该重写它,或者是否浪费时间.
我正在尝试使用Arduino和Epson TM-T88II收据/ POS打印机构建微型打印机.打印机使用Epson Esc/POS系统,但是我无法从Arduino那里做任何事情.我做的事情如下:
#include <SoftwareSerial.h>
#define out_pin 3
#define in_pin 2
SoftwareSerial printer = SoftwareSerial(in_pin, out_pin);
void setup()
{
pinMode(in_pin, INPUT);
pinMode(out_pin, OUTPUT);
printer.begin(9600);
delay(1000);
printer.print(0x1B, BYTE);
printer.print('@'); // ESC(HEX 1B) @ is supposed to initialize the printer
printer.print("hello world");
printer.print(0xA, BYTE); // print buffer and line feed
}
Run Code Online (Sandbox Code Playgroud)
我根本无法让打印机响应.打印机启动并打印自检就好了.它是一台串行(RS-232)打印机,我通过MAX233芯片将它连接到Arduino .我通过芯片检查并重新检查了我的连接,我认为这是基于一个有类似设置工作的朋友.我在某处看到TM-T88打印机需要零调制解调器串行电缆,所以我买了一个适配器,这似乎没有任何区别.
我是电子新手,所以我完全难过了.我只是想让它打印出来,所以我可以进入有趣的部分 - 编程:).有关测试/尝试的事情的任何想法?我可以提供有关布线或其他任何内容的更多细节,只是不想让它太长.
假设我有一个包含六个未知值的字节:
???1?0??
Run Code Online (Sandbox Code Playgroud)
我想交换第2和第4位(不改变任何?值):
???0?1??
Run Code Online (Sandbox Code Playgroud)
但是如何在C 中的一次操作中执行此操作?
我在微控制器上每秒执行此操作数千次,因此性能是首要任务.
可以"切换"这些位.即使这与交换位不同,切换也可以用于我的目的.
我是Linux Mint用户.我正在处理Arduino Yun.我正在编译Arduino程序.之后我上传到Arduino Yun.然后我收到这些错误.你能帮助我吗?