我怎样才能在这个 tikz 生成的示波器的屏幕​​上绘制方波函数?

我怎样才能在这个 tikz 生成的示波器的屏幕​​上绘制方波函数?

这是一个完全由 tikz 生成的示波器。我只是从 texample.org 复制了它并稍微修改了代码。我现在想在上面画一个方波函数,但我卡住了。

    \documentclass[border=5mm]{standalone}
    \usepackage{tikz}

    \begin{document}
    \def\scl{0.6}%scaling factor of the picture
    \begin{tikzpicture}[
      scale=\scl,
      controlpanels/.style={yellow!30!brown!20!,rounded corners,draw=black,thick},
      screen/.style={green!50!black!60!,draw=black,thick},
      trace/.style={green!60!yellow!40!, ultra thick},
      smallbutton/.style={white,draw=black, thick},
      axes/.style={thick}]
      \fill[green!30!blue!30!,rounded corners,draw=black,thick](0,0)
        rectangle (27.75,13.25);
      \fill[yellow!30!brown!20!,draw=black,thick,rounded corners](0.25,0.25) rectangle (27.5,13.00);
    % Screen, centered around the origin then shifted for easy plotting
      \begin{scope}[xshift=8.1cm,yshift=6.6cm,samples=150, scale=1.4]
        \fill[black!60!,rounded corners,draw=black,thick](-5.3,-4.3)
    rectangle (5.3,4.3);
        \fill[screen] (-5.0,-4.0) rectangle (5.0,4.0);
        \draw[trace] plot(\x,{1+2.4*sin((2.5*\x +1) r)}); % r for radians...
        \draw[trace] plot(\x,{-1+1.25*sin((0.75*\x) r});
        \draw[thin] (-5.0,-4.0) grid (5.0,4.0);
        \draw[axes] (-5,0)--(5,0); % Time axis
        \draw[axes] (0,-4)--(0,4);
        \foreach \i in {-4.8,-4.6,...,4.8} \draw (\i,-0.1)--(\i,0.1);
        \foreach \i in {-3.8,-3.6,...,3.8} \draw (-0.1,\i)--(0.1,\i);
      \end{scope}
      % Feet
      \fill[black!70!,rounded corners,xshift=2cm] (0,-.5) rectangle (2,0);
      \fill[black!70!,rounded corners,xshift=23.75cm] (0,-.5) rectangle (2,0);
      %Channels
      % CH I
      \draw[thick] (16.8,1.4) circle (0.5cm);
      \fill[gray,draw=black,thick] (16.8,1.4) coordinate (CH1) circle (0.3cm);
      \fill[white,draw=black,thick] (16.8,1.4) circle (0.1cm);
      \node[scale={1.5*\scl}] at (16.8,2.2) {\sffamily \bfseries CH 1};
      \draw[thick] (18.2,1.4) coordinate(ground1) circle (0.2cm);
      \fill[black!60!] (18.2,1.4) circle (0.1cm);
      \draw[thick] (18.4,1.4) --(19,1.4)--(19,0.9);
      \draw[thick] (18.7,0.9)--(19.3,0.9);
      \draw[thick] (18.8,0.75)--(19.2,0.75);
      \draw[thick] (18.9,0.6)--(19.1,0.6);
      % CH II
      \draw[thick] (26.2,1.4) circle (0.5cm);
      \fill[gray,draw=black,thick] (26.2,1.4) coordinate (CH2) circle (0.3cm);
      \fill[white,draw=black,thick] (26.2,1.4) circle (0.1cm);
      \node[scale={1.5*\scl}] at (26.2,2.2) {\sffamily \bfseries CH 2};
      \draw[thick] (24.8,1.4) coordinate(ground2) circle (0.2cm);
      \fill[black!60!] (24.8,1.4) circle (0.1cm);
      \draw[thick] (24.6,1.4) --(23.9,1.4)--(23.9,0.9);
      \draw[thick] (23.6,0.9)--(24.2,0.9);
      \draw[thick] (23.7,0.75)--(24.1,0.75);
      \draw[thick] (23.8,0.6)--(24,0.6);
      % Volt/div the foreach loop draws the two buttons
      \foreach \i / \b in {18.5/225,24.3/255}{
      %Second parameter of the loop is the angle of the index mark 
      \begin{scope}[xshift=\i cm,yshift=5cm,scale=0.9]
        \node[scale=\scl] at (0,2.3) {\sffamily\bfseries VOLTS/DIV};
        \node[scale=\scl,black] at (-2.3,-1.8) {\sffamily\Large V};
        \node[scale=\scl,blue]  at (2.5,-1.8) {\sffamily\Large mV};
        \clip[rounded corners] (-2,-2) rectangle (2,2);
        \fill[black!30!,rounded corners,draw=black,thick] (-2,-2) rectangle (2,2);
        \fill[blue!50!black!20!,draw=black,thick]      (30:1.1)--(30:3)--(3,-3)--(-90:3)--(-90:1.1) arc(-90:30:1.1);
        \draw[very thick,rounded corners](-2,-2) rectangle (2,2);
        \draw[thick] (0,0) circle (1.0);
        \foreach \i in {0,30,...,330}
          \draw[thick] (\i:1.2)--(\i:2.5);
        \foreach \i/\j in {15/50,45/.1,75/.2,105/.5,135/1,165/2,195/5,225/10,255/20,285/5,315/10,345/20}
     \node[scale=\scl,black] at (\i:1.7) {\j};
        \fill[blue!30!black!60!,draw=black,thick] (0,0) circle (0.8cm);
        % Here you set the right Volts/Div button
        \draw[line width=1mm,red] (\b:0.3)--(\b:1.2);
        \end{scope}}
    %On-Off button
      \draw[rounded corners,thick,black] (15.9,7.9) rectangle (17.9,11.9);
      \fill[fill=red,draw=black,thick,rounded corners] (16.2,09.3) rectangle (17.6,10);
      \node[scale=\scl] at (16.9,11.1) {\sffamily\bfseries POWER};
      \node[scale=\scl] at (16.9,10.5) {\sffamily\bfseries ON/OFF};
    % X-pos
        \draw[rounded corners, thick,black] (18.1,7.9) rectangle (20.1,11.9);
        \fill[smallbutton] (19.1,10.5) circle (0.3cm);
        \node[scale={\scl}] at (19.1,11.1) {\sffamily\bfseries X-POS};  
    % Y-pos buttons
      \draw[rounded corners,thick,black] (20.3,7.9) rectangle (22.3,11.9);
      \fill[smallbutton] (21.3,9) circle (0.3cm);
      \node[scale=\scl] at (21.3,9.7) {\sffamily\bfseries Y-POS 2};
      \fill[smallbutton] (21.3,10.5) circle (0.3cm);
      \node[scale=\scl] at (21.3,11.1) {\sffamily\bfseries Y-POS 1};
    % Time/Div
        \begin{scope}[xshift=24.8cm,yshift=9.9cm,scale=1]
        \node[scale={1.25*\scl}]  at (0,2.3) {\sffamily\bfseries TIME/DIV};
        \clip[rounded corners] (-2.2,-2) rectangle (2.2,2);
        \fill[black!30!,rounded corners,draw=black,thick] (-2.2,-2) rectangle (2.2,2);
        \fill[blue!50!black!20!,draw=black,thick] (45:1.1)--(45:3)--(3,-3)--(-90:3)--(-90:1.1) arc (-90:45:1.1);
        \fill[green!50!black!40!,draw=black,thick]
  (45:1.1)--(45:3) arc(45:207:3) --(207:1.1) arc (207:45:1.1);
        \draw[very thick,rounded corners](-2.2,-2) rectangle (2.2,2);
        \node[scale={1.25*\scl}] at (-1.6,-1.6) {$s$};
        \node[scale={1.25*\scl}] at (1.6,-1.6) {$\mu{}\,s$};
        \node[scale={1.25*\scl}] at (-1.6,1.6) {$m\,s$};
        \draw[thick] (0,0) circle (1.0);
        \foreach \i in {-72,-54,...,262} \draw[thick] (\i:1.15)--(\i:1.35);
        \foreach \i/\j in {-72/.5,-54/1,-36/2,-18/5,0/10,18/20,36/50,54/.1,72/.2,90/.5,108/1,126/2,144/5,162/10,180/20,198/50,216/.1,234/.2,252/.5}
          \node[scale=\scl,black] at (\i:1.7){\j};
        \fill[blue!30!black!60!,draw=black,thick] (0,0) circle (0.8cm);
        % Here you set the Time/Div button
        \draw[line width=1mm,red] (-18:0.3)--(-18:1.2);    
      \end{scope}
      % cables
      \begin{scope}[line width=2mm,line cap=round] 
      \clip (current bounding box.south west) rectangle (current bounding box.north east);
       \draw[red] (CH1) to[out=-90,in=0] ++(-3,-3);
       \draw[red] (CH2) to[out=-90,in=0] ++(-3,-3);
       \draw (ground1) to[out=-90,in=0] ++(-3,-3);
       \draw (ground2) to[out=-90,in=0] ++(-3,-3);
      \end{scope}
    \end{tikzpicture}
    \end{document}
      \begin{scope}[line width=2mm,line cap=round] 
      \clip (current bounding box.south west) rectangle (current bounding box.northeast);
       \draw[red] (CH1) to[out=-90,in=0] ++(-3,-3);
       \draw[red] (CH2) to[out=-90,in=0] ++(-3,-3);
       \draw (ground1) to[out=-90,in=0] ++(-3,-3);
       \draw (ground2) to[out=-90,in=0] ++(-3,-3);
      \end{scope}
    \end{tikzpicture}
    \end{document}

答案1

示波器上的正弦函数由以下线条绘制:

 \draw[trace] plot(\x,{1+2.4*sin((2.5*\x +1) r)}); % r for radians...
 \draw[trace] plot(\x,{-1+1.25*sin((0.75*\x) r});

您可以将上述函数更改为方波函数,方法是将上面的几行替换为

\draw[trace] (-5,2) -- (-3.14,2) -- (-3.14,-2) -- (0,-2) -- (0,2) -- (3.14,2) -- (3.14,-2) -- (5,-2);

在此处输入图片描述

在上图中,我将线向下移动了一点,并增加了透明度(我认为这样看起来更好)。

      \begin{scope}[xshift=8.1cm,yshift=6.6cm,samples=150, scale=1.4]
    \fill[black!60!,rounded corners,draw=black,thick](-5.3,-4.3)
rectangle (5.3,4.3);
    \fill[screen] (-5.0,-4.0) rectangle (5.0,4.0);
    %\draw[trace] plot(\x,{1+2.4*sin((5*\x +1) r)}); % r for radians...
    \draw[thin] (-5.0,-4.0) grid (5.0,4.0);
    \draw[axes] (-5,0)--(5,0); % Time axis
    \draw[axes] (0,-4)--(0,4);
    \foreach \i in {-4.8,-4.6,...,4.8} \draw (\i,-0.1)--(\i,0.1);
    \foreach \i in {-3.8,-3.6,...,3.8} \draw (-0.1,\i)--(0.1,\i);
    \draw[trace, opacity=0.75] (-5,2) -- (-3.14,2) -- (-3.14,-2) -- (0,-2) -- (0,2) -- (3.14,2) -- (3.14,-2) -- (5,-2);
  \end{scope}

相关内容