Shaken Washboard, or the Driven Damped Pendulum. 
This is a modification of a Mathematica notebook written by my son, Michael Swift, for a junior level mechanics course in the physics department at Rice University.  
This is also a mathematical model of the Actual Shaken Washboard (ASW), built by Mechanical Engineering students Doug LaMaster, Jeremy Petak, and Sam Zerbib, who took this class in Fall 2012.
That machine has 
L = 3 (inches)
H = 1/8 (inch)
A = 0.9 (inches)
Those parameters give the period of small oscillations to be almost exactly 1 second.
The motor can vary the driving period between about 0.6 sec and 1.6 sec.
See Homework 2 from Fall 2023
To run this program, the user defines the dimensionless parameters
c, a, and ω, as well as the number of driving periods plotted, then runs the cell.

Define a function that solves the system, with the parameters c, ω0, etc. to be defined later.

Clear[θ]
xInIntervalab[x_, a_, b_]:= Module[{s},
s = Floor[(x-a)/(b-a)]*1.; (* the * 1. makes this a floating point number *)
x - s(b-a)];

runPendulum := Module[{p1, p2, tFinal = 2 Pi nP/ω},
sol=NDSolve[{θ''[t]+c *θ'[t]+Sin[θ[t]]==a*ω^2*Cos[ω*t],θ[0]== θ0,θ'[0]==v0},θ,{t,0,tFinal}];
grid2Pi[θMin_, θMax_] := (* puts grid lines at multiples of 2 Pi *)
Table[2 Pi i, {i, Floor[θMin/(2Pi)] , Ceiling[θMax/(2 Pi)] }];
θfinal = θ[tFinal]/.sol[[1]];
θfinalInInterval = xInIntervalab[θfinal, -Pi, Pi];
vfinal = θ'[tFinal]/.sol[[1]];
Print["Final {θ, θ'} is ", {θfinal, vfinal}];
If[θfinal>= Pi || θfinal < -Pi,
Print["Final {θ, θ'} is ", {θfinalInInterval, vfinal}, ", when θ is put in the interval [-π, π)"]
];
p1 = Plot[θ[tt]/.sol[[1]], {tt,0,tFinal}, AxesLabel ->{"ωt/(2π)", "θ"}, Ticks ->{Table[{2Pi n/ω, n}, {n, 0, nP}], Table[n Pi, {n, -5,5}]}];
p2 = ParametricPlot[{θ[tt], θ'[tt]}/.sol[[1]],{tt,0,tFinal}, AspectRatio -> 1, AxesLabel ->{"θ", "dθ/dt"}];
GraphicsRow[{p1, p2}]
]

Now define the parameters, and run the program.  Note that the value of a = 0.67 is not as interesting as larger a.  We will keep ω fixed at 0.7 and increase A-bar (= a) to see the transition to chaos.

a=5 Pi/7 * 0.9/3;  (* A-bar for the Actual Shaken Washboard, approximately 0.67*)
a = 1;  
ω=.7;  (* Driving frequency devided by natural frequency.  About 0.6 to 1.5 for the ASW *)
c = .2;
nP = 8; (* number of driving periods plotted *)
{θ0, v0} = {1,.5};
runPendulum

Here is a copy of that previous cell.
Now you can use that final state as the initial condition for another run and approximate the periodic solution.

a=5 Pi/7 * 0.9/3;  (* A-bar for the Actual Shaken Washboard, approximately 0.67*)
a = 1;
ω=.7;  (* Driving frequency devided by natural frequency.  About 0.6 to 1.5 for the ASW *)
c = .2;
nP = 8; (* number of driving periods plotted *)
{θ0, v0} = {1,.5};
runPendulum

Now change a to 1.3, using the final state of the a = 1 solution.  Note that this is an “asymmetric solution” that goes higher on the left.

a=5 Pi/7 * 0.9/3;  (* A-bar for the Actual Shaken Washboard, approximately 0.67*)
a = 1.3; 
ω=.7;  (* Driving frequency devided by natural frequency.  About 0.6 to 1.5 for the ASW *)
c = .2;
nP = 16; (* number of driving periods plotted *)
{θ0, v0} = {-1.795245284648095`,1.2725845606873776`};
runPendulum

Continue in this manner with a = 1.39 to see a period doubling.
Then try a = 1.4 and a = 1.41