İnternette gezinirken bulduğum basit bir osilaskop yöntemi...
1- "processing-3.3.5-windows32" Bu programı indiriyoruz. Arduino İDE gibi çalışan ufak bir program.
2- Aşağıdaki programı ARDUİNO İDE ile ARDUİNO muza yüklüyoruz.
3- Aşağıdaki diğer kodu ise indirdiğimiz programa kopyalayarak çalıştırıyoruz.
" Arduino yüklenecek
#define ANALOG_IN 0
void setup() {
Serial.begin(9600);
//Serial.begin(115200);
}
void loop() {
int val = analogRead(ANALOG_IN);
Serial.write( 0xff );
Serial.write( (val >> 8) & 0xff );
Serial.write( val & 0xff );
}
"
---------------------------------------
" İndirdiğimiz programa yüklenecek
"
| /* | |
| * Oscilloscope | |
| * Gives a visual rendering of analog pin 0 in realtime. | |
| * | |
| * This project is part of Accrochages | |
| * See http://accrochages.drone.ws | |
| * | |
| * (c) 2008 Sofian Audry (info@sofianaudry.com) | |
| * | |
| * This program is free software: you can redistribute it and/or modify | |
| * it under the terms of the GNU General Public License as published by | |
| * the Free Software Foundation, either version 3 of the License, or | |
| * (at your option) any later version. | |
| * | |
| * This program is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| * GNU General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU General Public License | |
| * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| */ | |
| import processing.serial.*; | |
| Serial port; // Create object from Serial class | |
| int val; // Data received from the serial port | |
| int[] values; | |
| float zoom; | |
| void setup() | |
| { | |
| size(1280, 480); | |
| // Open the port that the board is connected to and use the same speed (9600 bps) | |
| port = new Serial(this, Serial.list()[0], 9600); | |
| values = new int[width]; | |
| zoom = 1.0f; | |
| smooth(); | |
| } | |
| int getY(int val) { | |
| return (int)(height - val / 1023.0f * (height - 1)); | |
| } | |
| int getValue() { | |
| int value = -1; | |
| while (port.available() >= 3) { | |
| if (port.read() == 0xff) { | |
| value = (port.read() << 8) | (port.read()); | |
| } | |
| } | |
| return value; | |
| } | |
| void pushValue(int value) { | |
| for (int i=0; i<width-1; i++) | |
| values[i] = values[i+1]; | |
| values[width-1] = value; | |
| } | |
| void drawLines() { | |
| stroke(255); | |
| int displayWidth = (int) (width / zoom); | |
| int k = values.length - displayWidth; | |
| int x0 = 0; | |
| int y0 = getY(values[k]); | |
| for (int i=1; i<displayWidth; i++) { | |
| k++; | |
| int x1 = (int) (i * (width-1) / (displayWidth-1)); | |
| int y1 = getY(values[k]); | |
| line(x0, y0, x1, y1); | |
| x0 = x1; | |
| y0 = y1; | |
| } | |
| } | |
| void drawGrid() { | |
| stroke(255, 0, 0); | |
| line(0, height/2, width, height/2); | |
| } | |
| void keyReleased() { | |
| switch (key) { | |
| case '+': | |
| zoom *= 2.0f; | |
| println(zoom); | |
| if ( (int) (width / zoom) <= 1 ) | |
| zoom /= 2.0f; | |
| break; | |
| case '-': | |
| zoom /= 2.0f; | |
| if (zoom < 1.0f) | |
| zoom *= 2.0f; | |
| break; | |
| } | |
| } | |
| void draw() | |
| { | |
| background(0); | |
| drawGrid(); | |
| val = getValue(); | |
| if (val != -1) { | |
| pushValue(val); | |
| } | |
| drawLines(); | |
| } |
"
Arduinomuzun "A0" ucu ölçme ucudur!
Aşağıdaki video işinize yarayabilir!