将模拟输入值转换为灰色值

5次浏览(过去30天)
阿希利里德
阿希利里德 2021年8月25日
编辑: 图像分析 2021年9月27日
大家好!
我目前正在做这个项目: 超声波超声 ,其中arduino GLCD屏幕用于查看皮肤边界的位置。
这是通过在arduino中读取模拟值(电压)并将其转换为灰度值(0-255),并以具有各自灰度值的短水平线的形式在另一个下面绘制。强烈的回波脉冲对应一条明亮的白线。可用的代码如下所示:
定义pin_output5
定义pin_input_magnification4
定义pin_input_sleep3.
无符号长start_time
无符号长stop_time
无符号int值[600];//数组mitden eingelesenen Spannungswerten
intj;
intTrigger_time;// Dauer desTriggerpulses
intgray_value
定义中心240
包括< UTFT.h >
//声明我们将使用的字体
走读生uint8_t SmallFont []
UTFTmyGLCD (ILI9486、38、39、40、41)
// =========================
// ========= setup =========
// =========================
无效设置()
Serial.begin (115200);
REG_ADC_MR = 0x10380080;//从10380200改为10380080,1是PREESCALER, 8是FREERUN
ADC -> ADC_CHER = 0x03;//在引脚A7上启用ADC
pinMode (pin_output、输出);
pinMode (pin_input_magnification、输入);/ / Switch-input放大
pinMode (pin_input_sleep、输入);/ / Switch-input睡眠模式
digitalWrite (pin_output、低);
Trigger_time = 1;// Dauer desTriggerpulses
//设置液晶显示器
myGLCD.InitLCD ();
myGLCD.setFont (SmallFont);
myGLCD.clrScr ();
myGLCD。setColor(255,255,0);
myGLCD。fillRect(0, 0, 432, 13);
myGLCD。setColor(0,0,0);
myGLCD。setBackColor(255,255,0);
myGLCD.print (“声像图停止”,中,1);
// ========================
// =========循环=========
// ========================
无效循环()
(j = 0;J < 18;j++) // Darstellung von18扫描nebeneinander在x-Richtung
// Ausgabe des触发信号
// ==========================
digitalWrite (pin_output、高);
/ / delayMicroseconds (Trigger_time);
digitalWrite (pin_output、低);
// Einlesen der US-Reflexionen . //
// ===========================
//start_time = micros();
如果(digitalRead(pin_input_magnification) == LOW) // ohne Zeitstreckung埃因勒森·冯·维尔滕300号;erfasstezeitspan = 120µ秒
(i = 0;I < 300;我+ +)
((ADC->ADC_ISR & 0x03)==0);/ /等待转换
values[i] = ADC->ADC_CDR[0];/ /获取值
/ / delayMicroseconds (1);
其他的// mit Zeitstreckung艾因勒森冯600维尔滕;erfasstezeitspan = 240µ秒
(i = 0;I < 600;我+ +)
((ADC->ADC_ISR & 0x03)==0);/ /等待转换
values[i] = ADC->ADC_CDR[0];/ /获取值
/ / delayMicroseconds (1);
/ / delayMicroseconds (100);
/ /延迟(5);
/*
Stop_time = micros();
并同时“300个值的总时间:”);
并同时stop_time-start_time);
“微秒”);
并同时每次转换的平均时间(微秒):);
以(浮动)(stop_time-start_time) / 300);
* /
/*
价值观:“);
(i = 0;i < 600;我+ +)
以价值[我]);
* /
// Zeichnen des扫描
// ==================
如果(digitalRead(pin_input_magnification) == LOW) // ohne ZeitstreckungDarstellung der ersten 300 eingelesenen Werte
myGLCD。setColor(255, 255, 255);
myGLCD。setBackColor(0,0,0);
myGLCD。drawLine(440,15,440,15 + 300);
myGLCD。drawLine(440,15,445,15);
myGLCD。drawLine(440,65,445,65);
myGLCD。drawLine(440,115,445,115);
myGLCD。drawLine(440,165,445,165);
myGLCD。drawLine(440,215,445,215);
myGLCD。drawLine(440,265, 445,265);
myGLCD。drawLine(440,315,445,315);
myGLCD.print (“0”, 450, 10);
myGLCD.print (“20”, 450, 60);
myGLCD.print (“40”, 450, 110);
myGLCD.print (“60”, 450, 160);
myGLCD.print (“80”, 450, 210);
myGLCD.print (“100”, 450, 260);
myGLCD.print (“120”, 450, 310);
(i = 0;I < 300;我+ +)
值[i] = map(值[i], 0, 4095, 0, 255);// Bringe die Helligkeitswerte in den Zahlenbereich [0,255]
//values[i] = random(255);
myGLCD。setColor(values[i], values[i], values[i]);
myGLCD。fillRect(j * 24,15 + i, j * 24 + 23,15 + i);
其他的// mit Zeitstreckung我的天哪!我的天哪
myGLCD。setColor(255, 255, 255);
myGLCD。setBackColor(0,0,0);
myGLCD。drawLine(440,15,440,15 + 300);
myGLCD。drawLine(440,15,445,15);
myGLCD。drawLine(440,65,445,65);
myGLCD。drawLine(440,115,445,115);
myGLCD。drawLine(440,165,445,165);
myGLCD。drawLine(440,215,445,215);
myGLCD。drawLine(440,265, 445,265);
myGLCD。drawLine(440,315,445,315);
myGLCD.print (“0”, 450, 10);
myGLCD.print (“40”, 450, 60);
myGLCD.print (“80”, 450, 110);
myGLCD.print (“120”, 450, 160);
myGLCD.print (“160”, 450, 210);
myGLCD.print (“200”, 450, 260);
myGLCD.print (“240”, 450, 310);
(i = 0;I < 300;我+ +)
值[2*i] = map(值[2*i], 0,4095, 0,255);// Bringe die Helligkeitswerte in den Zahlenbereich [0,255]
//values[2*i] = random(255);
myGLCD。setColor(values[2*i], values[2*i], values[2*i]);
myGLCD。fillRect(j * 24,15 + i, j * 24 + 23,15 + i);
// Pause-Taster abfragen
// =====================
如果(digitalRead(pin_input_sleep) == HIGH)
(digitalRead(pin_input_sleep) == HIGH)
/ /睡
延迟(1000);
现在…回答我的问题。我没有一个GLCD屏幕,并计划采取模拟值,并将它们存储在一个excel表格。然后将这些值输入MATLAB,创建与下面代码相同的思想,其中亮线将显示强回声脉冲。然而,我已经尝试了一些内置的MATLAB函数,如:
A = readmatrix(“dummyvalues.xlsx”);
convertTogray = (255*mat2gray(A));
图像(convertTogray)
colormap(灰色)
colorbar;
但是,我得到的图像黑白线条非常混杂,不太清楚,我不确定是否有更好的方法。
提前谢谢你。
3评论
图像分析
图像分析 2021年9月27日
@Ashleigh里德 ,你忘记了 附上“dummyvalues.xlsx” .你能做到吗?成功 容易 让别人来帮助你。

登录评论。

答案(0)

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!