99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>構(gòu)建3D跟蹤器開(kāi)源分享

構(gòu)建3D跟蹤器開(kāi)源分享

2022-11-11 | zip | 0.35 MB | 次下載 | 免費(fèi)

資料介紹

描述

動(dòng)機(jī)

數(shù)據(jù)分析是科學(xué)、技術(shù)、工程和數(shù)學(xué) (STEM) 領(lǐng)域的一個(gè)關(guān)鍵問(wèn)題。可視化數(shù)據(jù)的能力對(duì)于理解數(shù)據(jù)并得出結(jié)論至關(guān)重要。因此,視力受損的學(xué)生處于不利地位,可能會(huì)不鼓勵(lì)從事科學(xué)事業(yè)。已經(jīng)開(kāi)發(fā)了許多工具來(lái)克服這一挑戰(zhàn),但是,它們通常依賴于口頭描述或靜態(tài)觸覺(jué)圖片,這可能會(huì)受到限制。據(jù)報(bào)道,觸覺(jué)和聽(tīng)覺(jué)刺激的結(jié)合可以提高盲人學(xué)生對(duì)幾何等視覺(jué)主題的學(xué)習(xí)[1] 。很明顯,需要讓視障者更容易接觸到 STEM 科目,因此在這個(gè)項(xiàng)目中,我們的目標(biāo)是構(gòu)建一個(gè)廉價(jià)的3D 跟蹤器,用于動(dòng)態(tài)聽(tīng)覺(jué)數(shù)據(jù)表示.

計(jì)劃

這個(gè)想法是構(gòu)建一個(gè)將數(shù)學(xué)函數(shù)(在真實(shí)的線、平面或 3D 空間上)轉(zhuǎn)換為聲音的設(shè)備。我們可以通過(guò)使用MGC3130芯片的 3D 跟蹤傳感器(例如FlickSkywriter )檢測(cè)用戶手的位置來(lái)導(dǎo)航空間。然后可以將記錄的位置用作數(shù)學(xué)函數(shù)的輸入,該數(shù)學(xué)函數(shù)的輸出可以處理成聲音信號(hào)通過(guò)將 3D-tracker 連接到ArduinoRaspberryPi可以輕松完成數(shù)據(jù)采集,然后我們可以處理數(shù)據(jù)并將輸出發(fā)送到聲音處理軟件,例如SupercolliderCSound 。

由于我們打算將其作為一種包容性技術(shù),我們還將嘗試包括視覺(jué)和觸覺(jué)反饋。為了可視化數(shù)據(jù),我們可以使用Processing ,這是一種專(zhuān)門(mén)為視覺(jué)藝術(shù)家開(kāi)發(fā)的簡(jiǎn)單編程語(yǔ)言。觸覺(jué)反饋可以通過(guò)不同的方式來(lái)實(shí)現(xiàn)。一方面,我們可以使用超聲波換能器在半空中創(chuàng)建觸覺(jué)反饋(Ultraino )。另一方面,我們可以使用振動(dòng)馬達(dá)來(lái)模擬不同的紋理(Hap2U )。

目前,我們?nèi)匀徊淮_定哪種是包含觸覺(jué)反饋的最佳方式,但我們會(huì)不斷更新。

適用于 Chromebook 的 Arduino、Processing 和 Supercollider

我們項(xiàng)目所需的軟件適用于 Windows、Mac 和 Linux 系統(tǒng),但不適用于 Chrome OS。如果您使用的是 Chromebook,有一些選項(xiàng)可以解決它。第一個(gè)是使用ArduinoProcessing的網(wǎng)絡(luò)編輯器,不幸的是,Supercollider 沒(méi)有在線選項(xiàng)。另一種選擇是CSound Web IDE ,但我們發(fā)現(xiàn) Supercollider 更易于使用。第二種選擇是安裝 Linux,可以通過(guò)多種方式完成。最簡(jiǎn)單的一種是啟用原生 Chrome OS Linux(測(cè)試版)虛擬機(jī)并安裝 Linux 應(yīng)用程序。這種方法的問(wèn)題是虛擬機(jī)仍然存在一些問(wèn)題,特別是設(shè)置音頻不是那么容易,使用 Supercollider 幾乎是不可能的。在 Chromebook 上安裝 Linux 的另一種方法是使用Crouton ,它為我們提供了一個(gè)可以更輕松地配置聲音的 Linux 發(fā)行版。讓 Supercollider 服務(wù)器運(yùn)行還有一個(gè)額外的步驟,將JACK 轉(zhuǎn)發(fā)到 CRAS 。請(qǐng)注意,此方法需要啟用開(kāi)發(fā)者模式,這會(huì)使您的 Chromebook 保修失效。

Arduino基礎(chǔ)知識(shí)

  • 代碼結(jié)構(gòu)
  • 變量
  • 功能

超級(jí)對(duì)撞機(jī)基礎(chǔ)

客戶端-服務(wù)器架構(gòu)

  • 評(píng)估線
  • 變量
  • 基本振蕩器
  • 合成器

加工基礎(chǔ)

  • 代碼結(jié)構(gòu)
  • 變量
  • 功能

輕彈/天空作家 (MGC3130)

第一步是獲取位置數(shù)據(jù)。我們使用Pi Supply的 Flick Large ,但 Pimoroni 的Skywriter可以以相同的方式連接,實(shí)際上,兩者都使用相同的 Arduino 庫(kù)。Flick 有 8 個(gè)公針,兩個(gè)用于電源(VCC、GND),兩個(gè)用于數(shù)據(jù)通信SDA、SCL)和四個(gè)數(shù)字針(TS、RESET、LED1、LED2)。前四個(gè)必須連接到Elegoo (Arduino) UNO R3中的相應(yīng)引腳,其他四個(gè)可以連接到 Elegoo 中的任何數(shù)字引腳。下面我們展示了示意圖連接,Skywriter 應(yīng)該以類(lèi)似方式連接,除了在這種情況下不存在的 LED 引腳。

pYYBAGNsZpuAOLmTAACNZKmH4E8743.jpg
Flick-Arduino 連接
?

為了控制 Flick,我們使用 Pimoroni 的Skywriter 庫(kù)。下載后,我們通過(guò)將 Skywriter 目錄復(fù)制到 Arduino 庫(kù)目錄來(lái)安裝庫(kù)。我們現(xiàn)在可以啟動(dòng) Arduino IDE 并開(kāi)始編碼。一個(gè)簡(jiǎn)單的例子是跟蹤位置并將其顯示在串行監(jiān)視器上。為了啟用串行端口上的通信,我們包括接下來(lái)的兩個(gè)庫(kù)

#include 
#include 

然后我們初始化Arduino板如下

void setup() {
  Serial.begin(9600); //Initialise serial communication at 9600 bds
  while(!Serial){}; //We wait for the data serial port to start
  Serial.println("Hello world!"); //The port is ready!

  Skywriter.begin(10,11); //Initialise the Flick with the pins TS=D10 and RESET=D11
  
  Skywriter.onXYZ(handle_xyz); //This method records the position on the Flick and the function handle_xyz manipulates the data.
  
//We can initialise the LED pins as follows
  //pinMode (9, OUTPUT); //Red LED
  //pinMode (8, OUTPUT); //Green LED

  //We can turn on the green LED to know when the Flick is ready
  //digitalWrite (8, HIGH);
}

在這種情況下,Arduino 代碼的循環(huán)部分將只包含一行

void loop() {
  Skywriter.poll(); //Check if the status of the Flick has changed
}

此行檢查 Flick 的狀態(tài)是否已更改。如果沒(méi)有發(fā)生任何事情,我們將觀察到串行監(jiān)視器上沒(méi)有發(fā)生任何事情。如果狀態(tài)發(fā)生變化,例如將我們的手放在棋盤(pán)上,那么我們將觀察到一些動(dòng)作。最簡(jiǎn)單的方法是將位置打印為串行監(jiān)視器中的元組。以下功能可以解決問(wèn)題

void handle_xyz(unsigned int x, unsigned int y, unsigned int z){
  char buf[17]; //An array of 17 characters 5 for each coordinate and two delimiters
  sprintf(buf, "%05u:%05u:%05u",x,y,z); //Record the position on the Flick
  Serial.println(buf); //Print the position to the serial port, one line at a time
}

編譯代碼并將其上傳到 Arduino 板后,我們打開(kāi)串口監(jiān)視器,應(yīng)該會(huì)看到該行Hello world!(確保監(jiān)視器的速度與我們用于初始化串口的速度相匹配,本例中為 9600 bds)。如果我們將手放在 Flick 上并在它周?chē)苿?dòng),那么我們應(yīng)該會(huì)看到該位置一次打印一行。

Arduino 和超級(jí)對(duì)撞機(jī)

為了獲得代表數(shù)據(jù)的聲音,我們首先需要讓 Arduino 和 Supercollider 相互交談。我們通過(guò)串口通信來(lái)實(shí)現(xiàn)這一點(diǎn),并通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)演示。我們將在 Supercollider 中播放一個(gè)簡(jiǎn)單的 Synth,并使用 Flick 上的氣輪手勢(shì)控制它的頻率。

首先是Arduino代碼。我們像以前一樣初始化電路板,用方法更改行Skywriter.onXYZ();

Skywriter.onAirwheel(handleAirwheel); //This method records an airwheel event and returns a positive/negative value if clockwise/counterclockwise rotation is detedted

我們定義一個(gè)變量來(lái)控制正弦振蕩器的頻率:

int freq=440;

當(dāng)檢測(cè)到順時(shí)針或逆時(shí)針旋轉(zhuǎn)時(shí),該功能handleAirwheel會(huì)增加或減少頻率的值:

void handleAirwheel (int delta){
  if(delta>0){ //Increase the frequency if clockwise rotation
    if(freq<1000){ //Upper cutoff
      freq=freq+1;
      }
  }else if(delta<0){//Decrease the frequency if counterclockwise rotation
    if(freq>1){ //Lower cutoff
      freq=freq-1;
      }
  }
}

我們?cè)诖a的循環(huán)部分將頻率的值打印到串口:

void loop() {
  Skywriter.poll(); //Check if the status of the Flick has changed
  Serial.print(freq); //Print frequency to serial port
  Serial.print('a'); //Print a delimiter character
  delay(1);
}

我們打印一個(gè)分隔符a來(lái)輕松處理數(shù)據(jù),并打印一個(gè)小的延遲以避免 Supercollider 中的服務(wù)器崩潰。一旦我們的 Arduino 代碼在板上運(yùn)行,我們關(guān)閉 IDE,因?yàn)橹挥幸粋€(gè)設(shè)備可以同時(shí)與串行端口通信。然后我們打開(kāi) Supercollider IDE 并啟動(dòng)服務(wù)器。我們檢查下一行可用的串行端口

SerialPort.devices; //Check the available ports

帖子窗口(右下角)上的輸出應(yīng)該類(lèi)似于[/dev/ttyACM0]. 然后我們定義一個(gè)新的 Serial 變量運(yùn)行下一行

~port = SerialPort.new("/dev/ttyACM0",9600);

第一個(gè)參數(shù)對(duì)應(yīng)端口的名稱,第二個(gè)參數(shù)是速度,確保這與 Arduino 代碼中的速度相匹配。然后我們需要?jiǎng)?chuàng)建一個(gè)從 Flick 讀取數(shù)據(jù)并將其存儲(chǔ)在 Supercollider 變量中的函數(shù)

(
~charArray = []; //An array to store the characters printed to the serial port
~getValues = Routine.new({ //The code inside the routine loops indefinitely
	var ascii; //Supercollider read the characters in the serial port as ascii, so we need to convert them to numbers
	{
		ascii = ~port.read.asAscii; //We read the characters one by one and convert them to digits
		if(ascii.isDecDigit, {
			~charArray = ~charArray.add(ascii)
		});
		if(ascii == $a, { //We stop reading the characters when Supercollider finds the delimiter 'a'
			~val = ~charArray.collect(_.digit).convertDigits; //We collect and combine the digits into a number
			~charArray = []; //We empty the array
		})
	}.loop;
}).play
)

然后我們定義最簡(jiǎn)單的合成器,一個(gè)正弦波

(
SynthDef.new(\sineWave, { //Name of the Synth
	arg freq = 440; //Frequency
	var sig; //Output
	sig = SinOsc.ar(freq,0,1); //Sine oscillator with frequency freq, phase 0 and amplitude 1
	Out.ar(0,sig); //send output signal to the left speaker
}).add;
)

我們播放運(yùn)行下一行的合成器

~synth = Synth(\sineWave, [\freq, 440]);

然后我們創(chuàng)建一個(gè)例程來(lái)使用來(lái)自 Flick 的數(shù)據(jù)修改振蕩器的頻率

(
~control = Routine.new({
	{
		~synth.set(\freq, ~val.linexp(1,1000,20,2000)); //exponential map from (1;1000) to (20,2000)
		0.01.wait;
	}.loop;
}).play;
)

該例程~control以指數(shù)方式將打印到串行端口的值范圍映射到一個(gè)范圍(maximum frequency, minimum frequency)。當(dāng)人類(lèi)以對(duì)數(shù)方式感知頻率時(shí),我們使用指數(shù)圖。

如果一切正常,我們應(yīng)該聽(tīng)到這樣的聲音

?

當(dāng)我們玩完合成器后,我們停止控制例程并釋放服務(wù)器并停止串行通信,評(píng)估以下行

~control.stop;
~synth.free;
~port.stop;

Arduino 和處理

將 Arduino 板與 Processing 進(jìn)行通信使我們能夠可視化我們的數(shù)據(jù)。通訊也是通過(guò)串口實(shí)現(xiàn)的。我們將通過(guò)一個(gè)使用手勢(shì)檢測(cè)的簡(jiǎn)單示例來(lái)展示如何做到這一點(diǎn)。Arduino代碼和之前一樣,這次將Skywriter.onAirwheel();方法替換為

Skywriter.onGesture(handleGesture); //This method records a gesture event up/down/right/left

其中函數(shù)handleGesture定義如下

void handleGesture(unsigned char type){
  Serial.println(type,DEC);                 //Prints 2 left-right, 3 right-left, 4 bottom-top, 5 top-bottom swipe
}

現(xiàn)在要讀取處理中的數(shù)據(jù),我們打開(kāi) IDE,加載serial庫(kù),并設(shè)置草圖窗口

import processing.serial.*;//load serial library
Serial myPort;//define serial variable

void setup(){
  size(400,400);//size of the sketch in pixels
  background(255);//white background
  myPort = new Serial(this, "/dev/ttyACM0",9600);//Use the same serial port and communication speed used in the Arduino code 
  myPort.bufferUntil('\n');//Wait for the port to be ready
}

該變量mySerial必須定義為從我們?cè)?Arduino 代碼中使用的相同端口讀取,并以相同的速度讀取數(shù)據(jù)。一旦我們建立通信,我們就可以使用串口中的數(shù)據(jù)。我們將創(chuàng)建一個(gè)帶有移動(dòng)粒子的簡(jiǎn)單草圖,該粒子可以在 +/- x 和 y 方向上加速,具體取決于我們?cè)?Flick 上滑動(dòng)的方向。要讀取mySerial端口中的數(shù)據(jù),我們使用函數(shù)serialEvent(),該函數(shù)會(huì)在串行端口中有新信息可用時(shí)進(jìn)行注冊(cè)并對(duì)其進(jìn)行處理,例如

void serialEvent (Serial myPort){
  direction=int(float(myPort.readStringUntil('\n')));//Read the data in the serial port as a string one line at a time, and converts it into a integer
  gravity();//Changes the direction of the acceleration depending on the value stored in direction. 2=right, 3=left, 4=up, 5 =down.
}

在這種情況下,我們一次讀取mySerial端口中的一行數(shù)據(jù)(這是'\n'字符所指示的)并將其作為整數(shù)存儲(chǔ)在變量中direction。該函數(shù)gravity()會(huì)根據(jù) o 中存儲(chǔ)的值更改加速度,direction例如,如果我們向右滑動(dòng),粒子應(yīng)該開(kāi)始向右“下落”,如下面的視頻所示。您可以在代碼部分找到草圖的詳細(xì)信息。

?

處理和超級(jí)對(duì)撞機(jī)

為了聽(tīng)到和可視化我們的數(shù)據(jù),我們需要讓 Processing 和 Supercollider 相互交談。與前面兩個(gè)例子不同的是,兩個(gè)平臺(tái)之間的通信不是通過(guò)串口來(lái)實(shí)現(xiàn)的,而是通過(guò)OSC 消息來(lái)實(shí)現(xiàn)的,它是專(zhuān)門(mén)為音樂(lè)和表演控制而設(shè)計(jì)的。我們將展示如何讓這兩個(gè)程序與一個(gè)簡(jiǎn)單的示波器草圖進(jìn)行對(duì)話。讓我們從處理草圖開(kāi)始。我們首先需要下載oscP5庫(kù)并安裝它。在 IDE 上轉(zhuǎn)到 Sketch->Import Library->Add Library 并查找 oscP5 文件。我們草圖的標(biāo)題和設(shè)置部分應(yīng)如下所示

import netP5.*;
import oscP5.*;

//Declare osc and supercollider ip address
OscP5 osc;
NetAddress supercollider; 

void setup(){
  
  size(800,400);
  
  osc = new OscP5(this,12000); //construct object osc, "this" references the Processing sketch and 12000 is the port at which it talks, this can be any number
  supercollider = new NetAddress("127.0.0.1", 57120); //construct object supercollider, 127.0.0.1 is the local IP address and 57120 the port
}

我們應(yīng)該知道我們正在與之交談的程序的IP地址,在這種情況下,我們正在向supercollider同一臺(tái)計(jì)算機(jī)上運(yùn)行的程序發(fā)送數(shù)據(jù),因此我們使用本地IP地址127.0.0.1和端口號(hào)57120??梢垣@取此信息通過(guò)評(píng)估NetAddr.localAddr;Supercollider 中的線。我們現(xiàn)在必須在 Supercollider 中建立通信。打開(kāi) IDE,我們要做的第一件事是使用本地 IP 和我們用于 OSC 的端口號(hào)構(gòu)造一個(gè) Net Address 對(duì)象

~processing = NetAddr.new("127.0.0.1",12000); //Construct object processing at the local address 127.0.0.1 and port number 12000

現(xiàn)在我們將產(chǎn)生一個(gè)頻率的正弦波,freq并將這個(gè)值發(fā)送到處理。我們使用與 Arduino-Supercollider 示例中相同的 Synth,但我們將控制例程更改如下

(
//Change the frequency at random
~fr = rrand(220,3520);
~synth.set(\freq, ~fr);

//Send OSC message to Processing, '/frequency' is the name of the message and ~fr its contents
~processing.sendMsg(
	'/frequency', ~fr
);
~fr; //Print the value of the frequency as a sanity check
)

每次我們?cè)u(píng)估這些線時(shí),我們都會(huì)改變正弦波的頻率并將其值發(fā)送到處理。要接收消息,我們使用 oscEvent() 函數(shù)

void oscEvent(OscMessage theOscMessage){
  omega=TWO_PI*float(theOscMessage.get(0).intValue())/(440*width); //convert the frequency value sent as a string from supercollider into an integer and then calculate the angular frequency 
}

在這種情況下,我們使用 OSC 消息中的數(shù)據(jù)來(lái)繪制一個(gè)角頻率為 的正弦波omega,這樣 440 Hz 波的一個(gè)周期就適合屏幕。我們還想從 Processing 向 Supercollider 發(fā)送消息,為此我們使用一個(gè)OscMessage對(duì)象。在這種情況下,我們將使用鍵盤(pán)上的向上和向下箭頭來(lái)增加正弦波的幅度/音量

void keyPressed(){//Registers when a key is pressed and stores it value on the variable key
  if(keyCode==UP){//UP,DOWN,RIGHT and LEFT are coded keys
    if(amplitude<200){//Increase amplitude
      amplitude+=10;
    }
  }else if(keyCode==DOWN){//Decrease amplitude
    if(amplitude>0){
      amplitude-=10;
    }
  }
  OscMessage msg = new OscMessage("/amplitude"); //Construct OscMessage object with name /amplitude
  msg.add(map(amplitude,0,200,0,1)); //map the amplitude to the [0,1] range and add it to the OSC message
  osc.send(msg,supercollider); //send the message
}

我們捕捉到消息并通過(guò)評(píng)估以下幾行來(lái)使用它來(lái)增加 Supercollider 中的音量

(
//This routine reads the message /amplitude from processing and uses it to control the volume of the sine wave
OSCdef('volume',{
	arg msg;//This variable stores the message
	~synth.set(\amp,msg[1]);//component [0] contains the OSC address, [1], [2],... contain the values added to the message
	},"/amplitude"); //the OSC message we are listening to
)

為了讓這個(gè)示例運(yùn)行,我們首先在 Processing 中播放草圖,然后評(píng)估 Supercollider 代碼。特別是,我們必須運(yùn)行,OSCdef 以便 Supercollider 監(jiān)聽(tīng)來(lái)自 Processing 的消息。在下面的視頻中,您可以看到此示例的工作原理,您可以下載代碼以查看詳細(xì)信息。

?

數(shù)學(xué)之聲

我們現(xiàn)在準(zhǔn)備把它們放在一起并聽(tīng)一些數(shù)據(jù)。例如,我們可以根據(jù)輸出信號(hào)的音量來(lái)推斷分布的形狀

?

?

添加觸覺(jué)反饋

我們可以通過(guò)使用跟蹤數(shù)據(jù)產(chǎn)生振動(dòng)來(lái)增加另一個(gè)層次的感覺(jué)。為此,我們?yōu)閭鞲衅鳂?gòu)建了一個(gè)外殼,它允許我們安裝一個(gè)顯示器,我們可以使用微型振動(dòng)電機(jī)使其振動(dòng)。由于這需要定制零件,我們將對(duì)外殼進(jìn)行建模并進(jìn)行 3D 打印。我們可以使用幾個(gè)免費(fèi)軟件工具來(lái)解決這個(gè)問(wèn)題,例如適用于 Linux 的FreeCAD或在線選項(xiàng)Fusion 360OnShape 。每一個(gè)都有幾個(gè)在線教程和資源,但在我看來(lái),OnShape 是最容易使用和學(xué)習(xí)最快的. 您可以在附件部分找到 skywriter 原型案例的 stl 文件。這種情況應(yīng)該允許在傳感器頂部安裝一塊透明的亞克力板,作為“觸覺(jué)顯示器”。我們可以將振動(dòng)電機(jī)粘附在亞克力板上,使用跟蹤數(shù)據(jù)激活。例如在上面的例子中,我們可以根據(jù)每個(gè)分布中點(diǎn)的局部密度來(lái)增加振動(dòng)強(qiáng)度。

不幸的是,在使用振動(dòng)反饋對(duì)傳感器進(jìn)行測(cè)試后,我們發(fā)現(xiàn)運(yùn)動(dòng)跟蹤器在封裝時(shí)的準(zhǔn)確性并不是那么好。因此,跟蹤數(shù)據(jù)是嘈雜的,并沒(méi)有給出公平的表示。也許,使用不同類(lèi)型的傳感器可能會(huì)很方便,例如 Sparkfun 的ZXgesture傳感器。

參考

[1] Cryer, H. (2013)。“向盲人和弱視學(xué)生教授 STEM 科目:文獻(xiàn)回顧和資源”。RNIB 無(wú)障礙信息中心,伯明翰:文獻(xiàn)綜述 #6。

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開(kāi)發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)