EEJournal

专题文章
现在就订阅

Arduino 0和1,低和高,假和真,和其他东西

工程师和计算机研究人员经常说数字计算机是基于0和1的,但这到底是什么意思呢?一方面,这是相对简单的;我是说,0和1,能有多难?另一方面,这个比喻的洋葱有很多层,就像一个实际的洋葱一样,它会让你流泪。

我现在思考的原因是我正在写一系列的Arduino训练营实用的电子产品体育)是英国首屈一指的电子和计算机爱好者杂志。因为我不能把所有的都讲完体育的印刷页面,我正在写像这样的辅助文章,以捕捉和分享许多超级有趣的上下文材料,这些材料塞满了宝贵的知识和琐事(另见什么是电压、电流和电阻?而且Arduinos和无焊面包板).

模拟和数字

让我们从物质世界的不同方面可以被视为和/或被视为两者之一这一事实开始模拟(在英国拼写为“analogue”)或数字在自然界中。

考虑在户外散步,暴露在温度、气压、湿度和阵风等环境条件下。所有这些元素都可以被认为具有连续变量值。在电子环境中,模拟设备或系统是使用连续变量信号来表示用于输入、处理、输出等的信息的设备或系统。模拟系统的一个非常简单的例子是由电阻调光开关控制的灯。

许多早期的计算机本质上是模拟的,因为它们采用物理现象的连续变化方面,如电、机械、液压或气动量来建模(表示)要解决的问题。

相比之下,数字设备或系统是使用离散(即不连续)值表示用于输入、处理、存储、输出等的信息的设备或系统。“数字”一词在电子和计算领域的使用最早是由贝尔实验室的研究员乔治·罗伯特·斯蒂比茨(George Robert Stibitz)在20世纪30年代左右提出的。

数字量是可以表示为处于有限数量状态之一的量。最简单的数字系统只使用两种状态,如0和1、OFF和ON、UP和DOWN等。作为一个简单数字系统的例子,考虑一个房子里的传统电灯开关。开关UP时,灯亮;当开关关闭时,灯就熄灭了(好吧,这是美国的工作方式,在英国是相反的,在世界其他地方你要碰碰运气)。

十进制和二进制

我们最熟悉的数字系统是小数(或称。十进制的),使用十位数字:0、1、2、3、4、5、6、7、8和9。因为有十个数字,我们说十进制是a八进制数数radix-10系统。

小数是a位值系统。这意味着一个数字的值既取决于数字本身,也取决于这个数字在这个数字中的位置,这就是为什么我们理解7、70、700和7000意味着不同的东西。

位置值数字中的每一列都有一个与之相关的“权重”。权重是底数的函数。在十进制的情况下,从最右边的数字开始,更恰当地称为最低有效位数(LSD),权重为100= 1(个位列),101= 10(十位列),102= 10 × 10 = 100(百位列),103.= 10 x 10 x 10 = 1000(千列),以此类推。每个数字与它所在列的权重相结合(即乘以),结果相加以确定该数字的总价值。

将数字与十进制列权重组合(来源:Max Maxfield)

十进制计数从零开始。首先,对个位列的值加1,直到9。此时,ones列中的所有可用值都已使用。因此,下一次计数将导致我们“翻转”,将ones列重置为0并增加tens列,结果为10。类似地,当计数最终达到99时,下一次计数将导致我们将ones列重置为0并尝试增加tens列,但我们也用光了该列中的值,因此我们重置到0并增加百位列,结果是100,如此类推……

尽管十进位数字系统可能在解剖学上很方便,但在数字计算机中使用它并不理想。我们今天主要使用的数字机器是由只能表示两个值的逻辑函数构成的,随着我们继续讨论,这些原因将变得很明显。这意味着,为了其内部操作的目的,他们必须使用二进制(以2为底radix-2)数字系统,只有两个数字:0和1。

二进制数字称为A.像十进制一样,二进制是位值系统,因此每一列都有一个与之相关的权重。从最低有效位(LSB)开始,权重为20= 1(个位列),21= 2 (twos列),22= 2 × 2 = 4(四列),23.= 2 × 2 × 2 = 8(8列),以此类推。和前面一样,每个位的值乘以其列的权值,并将结果相加以确定该数字的总价值。

将二进制中的数字与列权重组合(来源:Max Maxfield)

请注意,我们分别使用' 2 '和' 10 '下标来反映数字的二进制和十进制性质。按照惯例,除非上下文另有说明,否则不带下标的数字都假定为以10为基数。这类似于我们假设一个十进制数,如24,是一个正值,所以我们觉得没有必要包括加号,而写+24。

自然数,整数和整数

在数学中,这个术语自然数(或称。数数)指的是我们用来从1数到无穷的正数。自然数的集合通常用符号表示N,在那里N={1,2,3,4,5…∞}。同时,这个术语整数是指自然数的集合与数字零的组合。整数集合通常用符号表示W,在那里W={0,1,2,3,4,5…∞}。

这个词整数指由所有负计数数、零和所有正计数数组成的集合。整数集合通常用符号表示Z,在那里Z={-∞…5、4、3、2、1,0,1,2,3,4,5…∞}。

那么,电脑极客们用这个表达是什么意思呢正整数?说实话,这是一个棘手的问题。根据数学家的说法,正整数只包含那些带有加号的整数,正如我们前面提到的,加号实际上不需要按照惯例来写。由于零本身不是正数或负数,这意味着数学家将正整数等同于自然数(即,不包括零)。

然而,很多人认为0是一个正整数,因为它不带负号(“不带负号就是正的”,可以说)。这是大多数计算机社区成员(尽管是无意识地)采用的观点。因此,计算机迷通常会将正整数等同于整数(即,包括零),这是我们接下来将采用的定义。

位、字节和nybles

如前所述,二进制数据的最小单位是a(二进制数字)。如果一个比特可以表示两个值,0和1,那么一组两个比特可以用来表示22= 2 × 2 = 00、01、10、11。类似地,一组3位可以用来表示23.= 2 × 2 × 2 = 8个值:000、001、010、011、100、101、110、111。

一种常见的分组称为nybble(或一点一点地咬),由四位组成。这些位可以用来表示24=从0000到1111的16个0和1的不同二进制模式。如果我们决定使用这16种模式来表示正整数,那么我们可以用十进制表示从0到15的值。

另一种常见的分组称为a字节,由8位组成。因此,“两个字节构成一个字节”,这是电脑极客对文字游戏的一种极其有趣的想法。这些位可以用来表示28=从00000000到11111111的256个0和1的不同二进制模式。如果我们决定使用这256个模式来只反映正整数,那么我们可以用十进制表示从0到255的值。

前导零

用铅笔和纸写的十进制数字可以任意大,这取决于你可以使用的铅笔数量和你的耐力。相比之下,数字计算机中数字的最大值受到可用来表示它的比特数的限制。

在编写二进制数时,我们通常使用前导零(即在最有效的位(左侧)位置使用0)来填充二进制数,以反映用于在计算机中表示它们的字段的大小。例如,二进制值0110和00000110都相当于十进制的6,但是基于前导零的数量,我们知道前者将被传输、操作和存储为4位nybble,而后者将被传输、操作和存储为8位字节。

开关和继电器

在20世纪的头几十年里,工程师和发明家开始意识到电路可以提供执行算术函数和/或执行一系列操作来控制工业机械之类的东西的能力。

考虑一个简单的电路,由一个电池、一个灯泡和两个单极单掷(SPST)开关(类似于传统的电灯开关)组成,如下图所示。

使用ON/OFF开关实现AND函数(来源:Max Maxfield)

在这种情况下,开关是串联的(一个接一个),只有当这两个所有开关都处于关闭状态。今天,我们会认为这是逻辑与函数的开关级实现,但这个术语当时还不为人们所知。

现在考虑我们的原始电路的变化,其中开关并联(并排)连接如下所示。

使用ON/OFF开关实现OR函数(来源:Max Maxfield)

在这种情况下,如果灯是亮的要么的开关是关闭的(它也将是ON如果这两个所有开关都是闭合的)。今天,我们会认为这是逻辑或函数的开关级实现,但是——再说一次——20世纪早期的人们并不熟悉这个术语。

通过将许多开关以不同的方式连接在一起,可以实现任意复杂的逻辑功能。这些函数可以有多个输入和多个输出。与由人类控制的开关不同,它们可以通过其他方式激活和关闭,例如机器的移动部分。同样,作为灯泡的替代品,输出可以是像电动机这样的执行器。

手动开关的问题是,人类需要相对较长的时间来决定需要做什么,并去做。大约在20世纪30年代早期开始使用的一种替代方法是用继电器形式的机电对应物取代手动开关,其第一个版本大约在100年前的19世纪30年代中期推出。

传统的接力赛需要一名运动员电磁铁铁芯的:由铁芯(铁磁性磁芯)包裹的线圈组成的在线圈两端施加电势产生电磁场,可用于关闭或打开相关的开关触点。

因为继电器开关,适用于普通开关的术语也适用于继电器。例如,继电器切换一个或多个波兰人,每个人联系人可以通过激活线圈。常开(NO)触点在继电器激活时连接电路;继电器不工作时,电路断开。常闭(NC)触点断开电路时,继电器被激活;继电器不工作时,电路接通。

简单继电器电路符号(C表示SPDT和DPDT类型的公共端子)
(来源:Max Maxfield)

事情开始变得真正有趣的是,一个继电器的输出可以激活另一个线圈。这意味着有可能以这样的方式连接一堆继电器,以实现一个有限状态机(FSM),它可以自动循环复杂的操作序列,比手动控制开关快得多。

从某种角度来看,数字计算机只不过是复杂的状态机,大约20世纪40年代的一些早期数字计算机是使用中继实现的。然而,在20世纪30年代早期,创建如此复杂的系统是不切实际的,主要原因是工程师们根本没有必要的数学工具。

真空管

1879年,美国传奇发明家托马斯·阿尔瓦·爱迪生并没有发明第一个白炽灯。爱迪生的确发明了东西一个灯泡,只是它不是第一个。1878年(比爱迪生早一年),英国物理学家兼电工约瑟夫·威尔逊·斯旺爵士使用碳化线作为灯丝(爱迪生最终决定使用的材料),成功地演示了一个真正的白炽灯泡。此外,在1880年,斯旺在英国纽卡斯尔举行了世界上第一次大规模的电灯公开展览。

1879年,爱迪生公开展出他的第一个白炽灯泡。爱迪生的灯泡采用了安装在玻璃灯泡中的导电灯丝,从玻璃灯泡中抽出空气,留下真空。当电流通过灯丝时,灯丝会被加热到足以产生白炽灯并发出光,而真空则防止灯丝氧化和燃烧。爱迪生继续对他的灯泡进行实验,并在1883年发现,他可以检测到电子通过真空从发光的灯丝流向安装在灯泡内部的金属板。这一发现后来被称为爱迪生效应。

爱迪生没有进一步发展这一发现,但英国物理学家约翰·安布罗斯·弗莱明(John Ambrose Fleming)发现,爱迪生效应也可以用来探测无线电波,并将其转化为电能。1904年,弗莱明发明了双元件真空管二极管

两年后,也就是1906年,美国发明家李·德·福里斯特(Lee de Forest)在真空管中引入了第三种称为栅极的电极。由此产生的三极管既可用作放大器又可用作开关。许多早期的无线电发射机都是由德·福里斯特使用这些三极管制造的(他还提出了第一个现场歌剧广播和第一个无线电新闻报道)。真空管作为开关的能力除了在广播领域发生了革命性的变化外,还对数字计算产生了巨大的影响,大约在20世纪40年代,许多早期的数字计算机都是使用真空管实现的。

布尔代数

为了建立背景,让我们首先注意到这个术语命题指的是表达判断或观点的一种陈述或断言,这种判断或观点或真或假。例如,这个命题,“我刚刚把一桶燃烧的油倒在你的大腿上”,可能是真的,也可能是假的,但肯定没有模棱两可的地方。

大约在19世纪50年代的某个时候,一位名叫乔治·布尔的英国数学家建立了一个新的数学领域,称为符号逻辑,在这个领域中,命题之间的逻辑关系可以用方程象征性地表示。

命题可以通过几种方式组合,包括连词而且析取.连词是指与AND运算符组合的命题;例如,“你头上有只鹦鹉,耳朵里有条鱼。”连词的结果是真正的只有当所有组成连词的命题都是真正的,否则结果为.通过比较,析取指的是命题与OR运算符的组合;例如,“你的头上有只鹦鹉,或者你的耳朵里有条鱼。”分离的结果是真正的如果至少有一个命题构成了这个分离真正的,否则结果为

布尔的工作直到20世纪30年代末才在数学圈外被人所知,当时麻省理工学院的研究生克劳德·埃尔伍德·香农(Claude Elwood Shannon)提交了一篇彻底改变了电子学的硕士论文。在这篇论文中,香农展示了布尔代数提供了一个理想的技术来表示数字系统的逻辑操作。香农意识到布尔概念而且真正的可以映射到二进制数字0和1上,并且两者都可以通过电子电路很容易地实现。

真值表

数字设计工程师的另一个武器是真值表的概念。有点令人惊讶的是,尽管真值表与布尔代数密切相关,但真值表并不是布尔自己发明的。

早在1893年,美国哲学家、逻辑学家、数学家和科学家Charles Sanders Peirce就在未发表的手稿中发现了第一个已知的真值表。然而,奥地利裔英国哲学家路德维希·约瑟夫·约翰·维特根斯坦被普遍认为是他发明并普及了他的真值表Tractatus Logico-Philosophicus,完成于1918年,出版于1921年。同样在1921年,美国数学家和逻辑学家Emil Leon Post独立提出了一个类似的系统。

真值表每个输入变量有一列,每个输出变量有一列。每个变量可以有两个值之一:)或T (真正的).真值表的每一行都包含输入变量的一种可能配置,以及对这些值的操作结果,这些结果反映在与输出变量相关的列中。

考虑一个函数,它有两个输入变量“a”和“b”,一个输出变量“y”。由于有两个输入变量,并且每个输入变量可以有两个值,F或T,这意味着有两个2=与输入变量相关的4种可能的行排列:FF, FT, TF和TT。此外,由于有4行,这意味着有2行4= 16个输出的唯一排列,我们可以将其列表示为y0通过y15

一个双输入真值表有16种可能的输出组合
(来源:Max Maxfield)

如上所述,原来的真值表使用F和T来表示而且真正的,分别。这可能适合符号逻辑的学生,也适合命题演算的追随者,但数字逻辑设计师,比如你谦卑的旁白,发现如果我们看这些太长时间,会让我们头疼。因此,从今往后,我们将跳过工程师开始分别使用0和1来表示F和T的时间。

在上面所示的16种排列中,有6种是电子工程师主要使用的。我们称之为AND, NAND, OR, NOR, XOR和XNOR。

2输入AND, NAND, OR, NOR, XOR和XNOR函数的真值表(来源:Max Maxfield)

记住,我们用0来表示1表示真正的.对于AND,输出为真正的只有当两个输入都是真正的,否则输出为.在OR(更恰当地称为“包含OR”)的情况下,输出为真正的如果其中一个输入是真正的包括这种情况下,两个输入都是真正的),否则输出为.与XOR(“排他或”)相比,XOR的输出为真正的如果其中一个输入是真正的不包括这种情况下,两个输入都是真正的),否则输出为

在NAND(“非与”)、NOR(“非或”)和XNOR(“排他NOR”)函数的情况下,输出分别是AND、OR和XOR的逻辑逆。

值得注意的是,像AND、NAND、OR、NOR、XOR和XNOR这样的逻辑函数可以在各种实现技术中实现。除了上面介绍的电气开关、机电继电器和真空管,以及下面讨论的晶体管等半导体器件外,这些功能可以使用机械、液压和气动手段来实现,仅举几个例子(请参阅我在大理石基础上的专栏)图灵下跌,例如)。

晶体管和逻辑门

说到电,大多数材料都是导体、绝缘体或介于两者之间的东西,但有一类被称为半导体的特殊材料可以同时表现出导电和绝缘特性。硅就是这样一种材料。

晶体管是一种三端半导体器件。第一个点接触晶体管是在1947年发明的。1950年发明了一种更可靠的双极结晶体管(BJT), 1960年引入了另一种称为场效应晶体管(FET)的实现。

在模拟世界中,晶体管可以用作电压放大器、电流放大器或开关。在数字领域,这是我们感兴趣的领域,晶体管主要被认为是一个开关。考虑常规拨动开关与场效应晶体管的比较。

拨动开关(左)和晶体管(右)(来源:Max Maxfield)

关闭开关并连接可以使电流在A和B端子之间流动,而打开开关并断开连接则会阻止电流在A和B端子之间流动。类似地,在晶体管的情况下,施加在其控制端子上的电势可以用来打开晶体管,从而允许电流在其A和B端子之间流动。相反,从控制端移除电势将使晶体管关闭,从而阻止电流在A端和B端之间流动。

机械开关和晶体管开关的一个区别是大小。机械开关相对来说比较大,但是现在我们可以制造出非常小的晶体管,我们可以在一个硅芯片上制造出数十亿个这样的晶体管。另一个区别是速度。机械开关需要相对较长的时间来操作,而晶体管开关可以在一秒钟内激活和关闭数百万或数十亿次。此外,机械开关必须由人操作(或通过一些类似的方式),而晶体管可以由其他晶体管控制,这使我们能够创建超快和超复杂的电子系统。

我们可以用晶体管做的一件事是将它们连接在一起来实现逻辑功能,比如我们之前介绍过的AND、NAND、OR、NOR、XOR和XNOR函数。让我们以AND为例。我们可以把它看作是一个带有+ve(电源)和0V(接地)连接的黑盒。在这种情况下,我们还可以考虑其输入和输出信号上的值为+ve和0V,如下所示。

AND函数的电气视图和逻辑视图(来源:Max Maxfield)

如果我们知道计算机使用的电压是多少,比如5V,我们就可以把这个值代入电真值表中。问题是不同的电脑使用不同的电压,事情很容易变得混乱。它使我们的生活在逻辑门符号和逻辑0和1值的抽象世界中工作变得简单得多。

说到这个,到目前为止我们主要讨论了这个问题逻辑功能.简单的函数如AND、NAND、OR、NOR、XOR和XNOR通常被称为原始的盖茨原语逻辑门,或简单的门.这些简单的门可以组合起来实现更复杂的功能。

严格来说,这个术语逻辑函数暗示一个抽象的数学关系,而逻辑门建议一个潜在的物理实现。然而,在实践中,这些术语通常是互换使用的。“门”命名法背后的推理是,门指的是允许或阻止通过的任何东西。类似地,逻辑门允许或阻止信号的传递。

0和1

我们在本专栏开始时曾说过:“经常听到工程师和计算机研究人员说数字计算机是基于0和1的,但这实际上意味着什么?”我敢希望我们现在能更好地回答这个问题。

在硬件方面,对于我们来说,使用晶体管来创建简单逻辑门的电子实现相对容易,比如AND、NAND、OR、NOR、XOR和XNOR,它们可以检测输入端两个不同电压之间的差异,并在输出端产生两个不同的电压。我们不讨论具体的电压值,而是将它们抽象为0和1。我们还可以创建存储0和1值的内存元素。

我们可以使用简单的门和内存元素来创建更大的函数,我们可以使用它们来执行算术和逻辑操作。其中一个函数叫做a有限状态机(FSM),它是一种抽象机器,在任何给定时间都可以处于有限数量的状态之一。FSM可以根据输入信息从一种状态转变为另一种状态。数字计算机本质上是一个复杂的FSM。

正如我们之前讨论过的,这个术语二进制数字,可表示0或1。我们可以把一组比特聚在一起来表示我们想要的任何东西。例如,我们可以使用一组位来表示整数或浮点数形式的数值。或者,我们可以使用一组位来表示字母数字字符和标点符号。在的情况下美国信息交换标准代码(ASCII),例如:01000001表示“A”,01000010表示“B”,01000001表示“C”,等等。类似地,00110000表示“0”(字符,而不是数字),00110001表示“1”,00110010表示“2”,等等。

我们为数字计算平台创建程序,如Arduino,使用一种集成开发环境(IDE)。以Arduino为例,我们使用C/ c++编程语言来捕获程序的人类可读(源代码)版本。然后,我们使用编译器将此源代码转换为将在计算机上运行的等效机器代码。这段机器代码由指令和数据组成,以0和1的形式表示,可以被计算机使用。

当0和1遇到现实世界

Arduino的IDE配备了内置函数库,我们可以在程序中调用这些函数。一个这样的函数被调用digitalWrite (),可用于将0或1值写入指定的数字输入/输出(I/O)引脚。例如,如果我们想写一个0到引脚6,我们可以这样做:

digitalWrite (6 0);

或者,如果我们想写一个1到pin 6,我们可以这样做:

digitalWrite (6,1);

在这种情况下,0和1意味着什么?在现实世界中,它们会以电压值的形式出现在Arduino的输出引脚上。以Arduino Uno为例,0和1将分别以0V和5V的形式出现在输出引脚上。下面展示了一种可视化的方法。

可视化Arduino的digitalWrite()函数如何工作
(来源:Max Maxfield)

Arduino Uno由一个5V电源轨和一个0V地轨供电。我们可以把这些轨道看作是在设备内部复制的。记住,我们可以把一个晶体管看作一个开关,我们可以使用两个晶体管来实现一个等效的单极双掷(SPDT)开关。当我们使用digitalWrite (0)语句,这将引脚6连接到Arduino内部的0V轨道,这是呈现给外界的值。相反,当我们使用adigitalWrite (6,1)语句,这将引脚6连接到Arduino内部的5V轨道,它是这个值呈现给外界。

低与高

Arduino的初学者被告知要做的第一件事就是使用digitalWrite ()命令使连接到Arduino开发板上引脚13的发光二极管(LED)闪烁。作为这个的一部分,而不是使用digitalWrite (13,0),他们被告知要使用低digitalWrite(13日).类似的,而不是使用digitalWrite(13日1),他们被告知要使用digitalWrite(13日高)

一方面是条款而且是相当直观的。我们可以认为它们代表低电压和高电压,例如0V和5V。考虑以下来自示波器的屏幕截图:

从左到右读取,黄色和蓝色痕迹都从5V开始。一段时间后,蓝色痕迹下降到0V,接着是黄色痕迹。接下来,蓝色线返回到5V,然后是黄色线。在这种情况下,更正的电位(在这种情况下为5V)比更负的电位(在这种情况下为0V)“高”是有道理的。

唯一的问题是C/ c++编程语言没有的概念而且那么这些关键词是从哪里来的呢?

让我们从另一个角度来看这个问题。假设您在不支持的环境中使用C/ c++而且关键字,但你真的,真的想用这些小scamps。一个解决办法是使用#定义预处理器指令如下:

#定义LOW 0
#定义HIGH 1

事实上,类似的东西是那些建立Arduino IDE的人在幕后所做的。我不太确定他们为什么要这么做。我猜是因为他们认为使用而且对于初学者来说,这比使用0和1更直观(也不那么可怕)。

假与真

在计算机科学中保龄球而且布尔数据类型(以George Boole命名)可以有两个可能的值之一,用于表示真正的而且与逻辑和布尔代数相关的值。

不同的编程语言支持不同风格的保龄球而且布尔数据类型。试图把你的大脑围绕着这个话题会让你头疼。例如,C不支持本机保龄球数据类型,但是您可以通过包含“stdbol .h”头文件来添加这种类型。相比之下,c++支持本机保龄球类型。C和c++都不支持a布尔数据类型,但Arduino IDE支持这两种类型(我们可以认为布尔类型的别名保龄球数据类型)。

初学者被教导类型变量保龄球布尔可以赋值为真正的而且.虽然我要告诉你的并不是完全正确的(没有双关语的意思),我们可以想到保龄球类型的别名int(整数)数据类型。另外,尽管底层的实现不是我要展示给你们的,但我们可以考虑而且真正的值的定义方法与而且价值如下:

#定义false 0
#定义true 1

这为广泛的可能性打开了大门。例如,如果我们想写一个0到引脚6,我们可以这样做:

digitalWrite(假);

或者,如果我们想写一个1到pin 6,我们可以这样做:

digitalWrite(真实);

类似地,如果我们声明一个变量为类型保龄球布尔,并为其赋值而且真正的,我们也可以给它赋值0和1和而且

总之

正如我在本专栏开头提到的:“这个比喻的洋葱有很多层,就像一个实际的洋葱一样,它可以让你流泪。”你流泪了吗?

如果说实话(再次强调,这不是双关语),我们只是触及了这个话题的表面。不过,希望我已经成功地说服了您,数字计算机是基于0和1的,而其他所有东西最终都分解为这两个值。如果是这样的话,您将会痛苦地了解到这实际上并不是100%的情况,但是——为了我们的集体理智——我们将把trits、tryte、trybbles和三元计算机等主题留到将来的专栏中讨论。

在此之前,我一如既往地欢迎你们提出有见地的评论、有见地的问题和有见地的建议。

关于“Arduino 0和1,LOW和HIGH,假和真,以及其他东西”的6个想法

  1. 嗨,Max,好文章,但看看digitalWrite(6,1)图,我认为开关应该换了?除非你用的是上拉电阻。
    把一个易怒的

    1. 啊,好钓!谢谢你易怒的。我只是做了这个改变。在硬皮庄园和硬皮太太过得怎么样?

      1. 现在,Crusty正在与热量流失作斗争,这样一来,Crusty夫人就可以在烹饪精美的饭菜时保持温暖,这些饭菜就像变魔术一样送到了餐桌上。

        目前,Crusty正在逆向设计一台500瓦无刷缝纫机的电机和控制器。在侵入电子设备时,他遇到了可怕的电源,它的中性电源直接连接到数字零伏特线。
        当被接地的范围或逻辑探针探测时,大的功率飞溅可以从这些家伙身上发生。
        现在必须为瞄准镜探测器和黑客电子设备制造隔离放大器。
        好吧,我们生活和学习,即使在75岁的时候,也有一些很棒的数字和模拟隔离器可用。

        祝你圣诞快乐,新年快乐。
        一个易怒的

  2. 像往常一样,马克斯,另一篇信息丰富的文章,你的签名容易阅读的写作风格。也许这将是一个将门和状态机与Flowpro Machine进行比较的好机会。你可以用门做的任何事情,你也可以用决策(测试)块做。使用图灵机执行的任何计算都可以使用Flowpro Machine执行,而无需使用布尔或状态机结构。

留下回复

有特色的博客
2022年12月22日
当谈到汽车、摩托车和动力设备时,本田是一个家喻户晓的名字,也是世界上最大的汽车制造商之一。在汽车开发周期的一个关键阶段是发动机的功能保证,具体地说,就是保证发动机的头部。
2022年12月20日
作者:James Paris和Armen Asatryan在实现过程中自动进行简短检查,让设计团队快速找到并修复这些错误... ...
2022年12月20日
我们在Synopsys上回顾了2022年,包括基于云的芯片设计工具、机器学习和人工智能驱动的EDA解决方案、多模系统和安全接口IP。回顾一年:回顾2022年的关键技术进步和冒险,这篇文章首次出现在来自硅…
2022年12月15日
看完这个视频后,我非常想创建我自己的电磁/水浴相控阵实现....

有特色的视频

TI隔离技术:设计不同

德州仪器公司

对隔离的需求正在增长,虽然机电继电器、光耦合器和离散变压器已广泛用于信号和电源隔离,但我们致力于进一步推动隔离技术。看看我们的电容性和磁性技术下一步将走向何方。

了解更多

特色粉笔谈话亚博里的电子竞技

能源储存:部门耦合的关键

逮老鼠的电子产品而且菲尼克斯

气候变化使得更好的能源储存比以往任何时候都更加重要。在这集粉笔谈话中,来自凤凰接触的Rüd亚博里的电子竞技iger Meyer博士和我一起讨论能量存储系统的内容、位置和方式。我们将仔细研究典型储能系统中的结构和组件,以及连接器在成功的储能系统中所起的作用。

点击这里了解更多关于凤凰接触储能解决方案的信息

Baidu